2014-12-19 42 views
0

我想要使用python和Django的框api的請求。我收到了一個400 Entity body should be a correctly nested resource attribute name\\/value pair錯誤。Django嵌套的身體請求沒有設置

我的要求是這樣的:

requests.options(headers.kwargs['url'], headers=headers.headers, 
       data={'parent': {'id': 'xxxx'}, 'name': 'name.pdf'}) 

當我檢查400 request.body它包含'parent=id&name=name.pdf'這使我相信我沒有正確

的捲曲的工作原理與身體定身

-d '{"name": "name.pdf", "parent": {"id": "xxxxx"}}'

回答

1

顯式編碼字典,以防止形狀ENCO丁。否則,它將以類似於urllib.urlencode(或Python 3.x中的urllib.parse.urlencode)的方式進行表單編碼。

import json 

... 

requests.options(
    headers.kwargs['url'], headers=headers.headers, 
    data=json.dumps({'parent': {'id': 'xxxx'}, 'name': 'name.pdf'})) 

換句話說,不是傳遞字典,而是傳遞字符串。


根據:

... 還有,你要發送的數據,是不是 形式編碼的許多倍。如果你傳遞一個字符串而不是字典,那麼這個數據將被直接發佈。

+0

謝謝,這是有幫助的。儘管我現在得到了'401'的迴應。當我刪除json.dumps時,它會回到'400'。有任何想法嗎? – user2954587 2014-12-19 02:17:52

+0

@ user2954587,沒有線索。你能用完全追溯發表一個新問題嗎? – falsetru 2014-12-19 02:19:17