根据我的axios POST
请求。我从ImmutableMultiDict
得到了一个request.form
的烧瓶。
字典看起来像这样:
ImmutableMultiDict([('{"values":{"firm":"","infosys":"","spot":""}}', u'')])
我可以使用to_dict()
转换为常规词典,它看起来像这样:
{'{"values":{"firm":"","infosys":"","spot":""}}': u''}
如何获取'firm','infosys'和'spot'键的值?
useEffect(() => {
console.log(values);
const postData = async () => {
const data = JSON.stringify({values: values})
const result = await axios.post('http://127.0.0.1:5000/form/', data)
console.log(result);
};
postData()
}, [values]);
答案 0 :(得分:3)
您得到一个JSON
对象,您需要先对其进行转换。
import json
v = {}
x = {'{"values":{"firm":"","infosys":"","spot":""}}': u''}
for key in x:
v = json.loads(key)
print v['values']['firm']
print v['values']['infosys']
print v['values']['spot']
print type(v)
答案 1 :(得分:0)
您应该将数据结构从axios更改为仅反映表单内容:
const data = JSON.stringify(values)
然后Flask应该给您一个ImmutableMultiDict
,如下所示:
ImmutableMultiDict([('firm', u''), ('infosys', u''), ('spot', u'')])
然后您可以使用以下命令将其转换为有效的JSON
imd.to_dict() # `imd` variable holds your ImmutableMultiDict
您将获得:
{
'firm': '',
'infosys': '',
'spot': ''
}
如果您希望值包含列表,则可以在对flat
的调用中将False
设置为to_dict
:
imd.to_dict(flat=False)
那么您将得到:
{
'firm': [''],
'infosys': [''],
'spot': ['']
}