[英]python-requests - Sending via POST form with square brackets names doesn't work
我正在嘗試通過HTML表單將test [key1] = val1和test [key2] = val42發送到服務器。
相應的HTML將是:
<input type="text" name="test[key1]" value="val1" />
<input type="text" name="test[key2]" value="val42" />
(順便說一句,我想知道這種形式的正確名稱。)
>>> import requests, json
>>> params = { 'test' : { 'key1' : 'val1', 'key2' : 'val42' } }
>>> r = requests.post('http://httpbin.org/post', data=params)
>>> json.loads(r.text)['form']
{u'test': [u'key2', u'key1']}
發布數據已被拉平,我們得到了鍵,但是丟失了值val1和val42
我以為python-requests會自動處理帶有嵌入鍵的params json,事實並非如此。
您需要使用方括號編寫params
。
>>> params = { 'test[key1]' : 'val1', 'test[key2]' : 'val42' }
>>> r = requests.post('http://httpbin.org/post', data=params)
>>> json.loads(r.text)['form']
{u'test[key1]': u'val1', u'test[key2]': u'val42'}
希望這會幫助某人。
默認情況下,HTML表單無法序列化,因為它們不支持嵌套。 使用formencode
類的庫,尤其是variabledecode
模塊,可以將表單數據序列化/反序列化為json。
https://github.com/formencode/formencode/blob/master/formencode/variabledecode.py
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.