kin*_*chi 16 python werkzeug flask
address_dict = {'address': {'US': 'San Francisco', 'US': 'New York', 'UK': 'London'}}
Run Code Online (Sandbox Code Playgroud)
当通过请求发送上述参数时,如何使用Flask上的request.form获取地址键中的值?
import requests
url = 'http://example.com'
params = {"address": {"US": "San Francisco", "UK": "London", "CH": "Shanghai"}}
requests.post(url, data=params)
Run Code Online (Sandbox Code Playgroud)
然后我在flask.request的背景下得到了这个.
ImmutableMultiDict([('address', u'US'), ('address', 'US'), ('address', 'UK')])
Run Code Online (Sandbox Code Playgroud)
如何获取每个地址键的值?
谢谢.
mat*_*ata 18
例如像这样:
from werkzeug.datastructures import ImmutableMultiDict
imd = ImmutableMultiDict([('address', u'US'), ('address', 'US'), ('address', 'UK')])
print imd.getlist('address')
Run Code Online (Sandbox Code Playgroud)
打印:
[u'US', 'US', 'UK']
Run Code Online (Sandbox Code Playgroud)
编辑:
发送您的POST请求application/x-www-form-urlencoded,这意味着组合为键/值对.它不直接支持嵌套的dict结构.当我尝试你的卷曲请求我得到这个:
ImmutableMultiDict([('address[US]', u'San Francisco'), ('address[US]', u'New York'), ('address[UK]', u'London')])
Run Code Online (Sandbox Code Playgroud)
所以键在这里按字面解释.
并使用urllib2我得到这个结果:
>>> print urllib2.urlopen("http://localhost:5000/post", data=urllib.urlencode(address_dict)).read()
ImmutableMultiDict([('address', u"{'UK': 'London', 'US': 'New York'}")])
Run Code Online (Sandbox Code Playgroud)
这里urlencode只是发送内部字典的字符串表示.
最后使用requests:
>>> print requests.post("http://localhost:5000/post", data=address_dict).content
ImmutableMultiDict([('address', u'UK'), ('address', u'US')])
Run Code Online (Sandbox Code Playgroud)
在这里,阵列被展平,并且重复出现了键.
根本没有定义的方法如何以urlencoded方式发送像你这样的嵌套dict,所以你必须找到另一个解决方案.
| 归档时间: |
|
| 查看次数: |
16874 次 |
| 最近记录: |