2014-12-19 3 views
0

Я пытаюсь сделать запрос в поле api с помощью python и django. Я получаю ошибку 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 (или urllib.parse.urlencode в Python 3.x).

import json 

... 

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

Иными словами, вместо передачи словаря, передайте строку.


По :

... Есть много раз, что вы хотите, чтобы отправить данные, которые не форм-кодированию. Если вы передадите строку вместо dict, то данные будут опубликованы напрямую.

+0

спасибо, это было полезно. Я теперь получаю ответ «401». Когда я удаляю json.dumps, он возвращается к '400'. Есть идеи? – user2954587

+0

@ user2954587, нет подсказки. Не могли бы вы разместить новый вопрос с полной трассировкой? – falsetru

Смежные вопросы