Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Flask中将表单响应数据转换为Python字典?_Python_Flask - Fatal编程技术网

如何在Flask中将表单响应数据转换为Python字典?

如何在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

我有以下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()

结果是:
{'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'}