2010-08-26 21 views
5

ile aynı adı taşıyan birden çok POST veri öğesi gönderme AppEngine uygulamasında urlfetch kullanan bir sunucuya POST verileri göndermeyi deniyorum. Bu POST verileri öğelerinin bazıları aynı ada sahip, ancak farklı değerler içeriyor. AppEngine

form_fields = { 
    "data": "foo", 
    "data": "bar" 
} 

form_data = urllib.urlencode(form_fields) 
result = urlfetch.fetch(url="http://www.foo.com/", payload=form_data, method=urlfetch.POST, headers={'Content-Type': 'application/x-www-form-urlencoded'}) 

Ancak bu örnekte, sunucu değeri bar ile data adında yalnızca bir öğe receieve görünüyor. Bu sorunu nasıl çözebilirim?

cevap

13

aynı isimde alanlar listelerine dönüştü okunabilecek şekilde form_fields sözlüğü değiştirin ve urllib.urlencode için doseq argüman kullanın: Bu noktada

form_fields = { 
    "data": ["foo","bar"] 
} 

form_data = urllib.urlencode(form_fields, doseq=True) 

, form_data'data=foo&data=bar', ihtiyacınız olan şey budur.

+0

Teşekkürler, bu harika çalıştı (güzel ve basit bir açıklama) – jhanifen

1

Normal bir python dict bu tür bir şeyle başa çıkamaz; Bir webob.MultiDict gibi bir şey kullanın:

>>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')]) 
>>> urllib.urlencode(z) 
'foo=bar&foo=baz' 
İlgili konular