如何在Flask中将表单响应数据转换为Python字典?
我有以下POST格式的数据 标题:如何在Flask中将表单响应数据转换为Python字典?,python,flask,Python,Flask,我有以下POST格式的数据 标题:内容类型:'application/x-www-form-urlencoded': 数据:'field1=true&field2=false&field3=123' 在flask服务器中,使用response.form,生成以下结果: ImmutableMultiDict([('field1','true'),('field2','false'),('field3','123')) 完成后: request.form.to_dict() 结果是: {'field
内容类型:'application/x-www-form-urlencoded'
:
数据:'field1=true&field2=false&field3=123'
在flask服务器中,使用response.form
,生成以下结果:
ImmutableMultiDict([('field1','true'),('field2','false'),('field3','123'))
完成后:
request.form.to_dict()
结果是:
{'field1':'true','field2':'false','field3':'123'}
有没有办法将JSON布尔值true/false转换为Python布尔值true/false?
to_dict函数不应该将这些类型转换为python布尔类型吗
字典已转换,但true/false仍为字符串
除了使用字符串比较外,实现这一点的最佳方法是什么?您必须
封送
数据,即引用-
使用序列化库(如)处理表单数据
编辑:
如果您之前不知道表单结构,您必须手动转换它,因为true
在这里是一个字符串。如果不是,则可以使用json.loads
In [18]: data
Out[18]: {'field1': 'true', 'field2': 'false', 'field3': '123'}
In [19]: {k: True if v == "true" else False if v == "false" else v for k,v in data.items()}
Out[19]: {'field1': True, 'field2': False, 'field3': '123'}
只要我知道需要哪些字段,marshal就可以正常工作,但是对于数据类型未知的字段,可以做些什么呢?感谢您的快速回复!正如我在问题的最后一句中提到的,我想在不进行字符串比较的情况下完成它。@Romit我已经在回答中说明了为什么在没有字符串比较的情况下无法完成它
In [18]: data
Out[18]: {'field1': 'true', 'field2': 'false', 'field3': '123'}
In [19]: {k: True if v == "true" else False if v == "false" else v for k,v in data.items()}
Out[19]: {'field1': True, 'field2': False, 'field3': '123'}