Flask处理JSON请求时requests传递布尔值报错解决方案
报错原因
- 小写
true触发NameError:Python语法中合法布尔值为首字母大写的True/False,小写true不属于内置关键字,是未定义变量,因此直接抛出名称错误。 - 大写
True触发转义错误:传参方式错误,多数情况是将Python原生字典直接传给了requests的data参数。data参数默认接收表单类或字符串类请求体,不会自动将Python原生类型转换为标准JSON格式,传入布尔类型时就会触发转义异常。
正确实现方法
两种写法均可正常传递布尔值,优先选第一种:
- 方法1:使用requests内置
json参数(推荐)
requests会自动完成Python类型到JSON标准类型的映射,将Python的True/False自动转换为JSON规范的true/false,同时自动设置Content-Type: application/json请求头,无需额外处理:
import requests request_body = {"someBooleanValue": True} # 注意传参给json参数,而非data参数 response = requests.post("目标Flask接口地址", json=request_body)
Flask端接口中直接调用request.get_json()即可拿到解析后的字典,布尔值会自动还原为Python的True/False类型。
- 方法2:手动序列化后传入data参数
如果有自定义序列化需求,可以先用标准库json将字典序列化为JSON字符串,再传给data参数,需要手动设置对应请求头:
import requests import json request_body = {"someBooleanValue": True} json_data = json.dumps(request_body) response = requests.post( "目标Flask接口地址", data=json_data, headers={"Content-Type": "application/json"} )
内容的提问来源于stack exchange,提问作者Vee
相关产品推荐
相关产品推荐

