requests.post(url, data={'interests':'football','interests':'basketball'})
我尝试了这个,但它没有用。如何在football
字段中发布basketball
和interests
?
答案 0 :(得分:42)
字典键必须是唯一的,你不能重复它们。您将使用一系列键值元组,并将其传递给data
:
requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
或者,创建data
字典列表的值;列表中的每个值都用作单独的参数条目:
requests.post(url, data={'interests': ['football', 'basketball']})
演示POST到http://httpbin.org:
>>> import requests
>>> url = 'http://httpbin.org/post'
>>> r = requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
>>> r.request.body
'interests=football&interests=basketball'
>>> r.json()['form']
{u'interests': [u'football', u'basketball']}
>>> r = requests.post(url, data={'interests': ['football', 'basketball']})
>>> r.request.body
'interests=football&interests=basketball'
>>> r.json()['form']
{u'interests': [u'football', u'basketball']}
答案 1 :(得分:6)
可以使用urllib3._collections.HTTPHeaderDict
作为在键下具有多个值的字典:
from urllib3._collections import HTTPHeaderDict
data = HTTPHeaderDict()
data.add('interests', 'football')
data.add('interests', 'basketball')
requests.post(url, data=data)
答案 2 :(得分:0)
直接从docs报价:
数据参数还可以为每个键具有多个值。这个可以 通过使数据成为元组列表或字典来完成 列为值。当表单具有 使用同一键的多个元素:
>>> payload_tuples = [('key1', 'value1'), ('key1', 'value2')] >>> r1 = requests.post('https://httpbin.org/post', data=payload_tuples) >>> payload_dict = {'key1': ['value1', 'value2']} >>> r2 = requests.post('https://httpbin.org/post', data=payload_dict) >>> print(r1.text) { ... "form": { "key1": [ "value1", "value2" ] }, ... } >>> r1.text == r2.text True