如何在python请求中使用相同的键发布多个值?

Jas*_*nyi 24 python python-requests

requests.post(url, data={'interests':'football','interests':'basketball'})
Run Code Online (Sandbox Code Playgroud)

我尝试过这个,但它没有用.我将如何张贴football,并basketballinterests现场?

Mar*_*ers 46

字典键必须是唯一的,您不能重复它们.您将使用一系列键值元组,并将其传递给data:

requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')])
Run Code Online (Sandbox Code Playgroud)

或者,制作data字典列表的值; 列表中的每个值都用作单独的参数条目:

requests.post(url, data={'interests': ['football', 'basketball']})
Run Code Online (Sandbox Code Playgroud)

演示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']}
Run Code Online (Sandbox Code Playgroud)

  • 怎么样`requests.post(url,data = {'interest':['football','basketball']})`? (3认同)

Sjo*_*erd 8

可以urllib3._collections.HTTPHeaderDict用作在键下具有多个值的字典:

from urllib3._collections import HTTPHeaderDict
data = HTTPHeaderDict()
data.add('interests', 'football')
data.add('interests', 'basketball')
requests.post(url, data=data)
Run Code Online (Sandbox Code Playgroud)