إرسال عناصر بيانات متعددة بنشر مع نفس الاسم ، باستخدام APPENGINE

StackOverflow https://stackoverflow.com/questions/3577064

سؤال

أحاول إرسال بيانات النشر إلى خادم باستخدام urlfetch في AppEngine. بعض عناصر ما بعد DATA هذه لها نفس الاسم ، ولكن مع قيم مختلفة.

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'})

ومع ذلك ، في هذا المثال ، يبدو أن الخادم يتلقى عنصرًا واحدًا فقط data, ، مع القيمة bar. كيف يمكنني حل هذه المشكلة؟

هل كانت مفيدة؟

المحلول

تعديل الخاص بك form_fields القاموس بحيث يتم تحويل الحقول التي تحمل نفس الاسم إلى قوائم ، واستخدام doseq حجة ل urllib.urlencode:

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

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

عند هذه النقطة، form_data هو 'data=foo&data=bar', وهذا ما أعتقد أنك بحاجة إليه.

نصائح أخرى

لا يمكن لقيام بيثون الطبيعي التعامل مع هذا النوع من الأشياء ؛ استخدم شيئًا مثل webob.multidict:

>>> z = webob.MultiDict([('foo', 'bar'), ('foo', 'baz')])
>>> urllib.urlencode(z)
'foo=bar&foo=baz'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top