как опубликовать несколько значений с одним и тем же ключом в запросах python?

requests.post(url, data={'interests':'football','interests':'basketball'})

но, не работает, как разместить football и basketball в области interests?

Ответы

Ответ 1

Словарные ключи должны быть уникальными, вы не можете их повторять. Вместо этого вы должны использовать последовательность кортежей с ключом и передать это следующим 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']}

Ответ 2

В качестве словаря, который имеет несколько значений под ключом, можно использовать urllib3._collections.HTTPHeaderDict:

from urllib3._collections import HTTPHeaderDict
data = HTTPHeaderDict()
data.add('interests', 'football')
data.add('interests', 'basketball')
requests.post(url, data=data)