2014-04-30 6 views

risposta

28

Le chiavi del dizionario devono essere essere uniche, non è possibile ripeterle. Devi usare una sequenza di tuple chiave-valore, invece, e passa questo a data:

requests.post(url, data=[('interests', 'football'), ('interests', 'basketball')]) 

In alternativa, rendere i valori del dizionario dataliste; ogni valore nella lista viene utilizzato come voce parametro a parte:

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

Demo POST per 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']} 
+3

Come su 'requests.post (url, data = {'interessi': ['football', 'basketball']})'? –

+0

@GuilhermeGarnier: sì, funzionerà anche tu. –

3

E 'possibile utilizzare urllib3._collections.HTTPHeaderDict come un dizionario che ha più valori in una chiave:

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