Django-rest-framework: request.POST является пустым querydict, когда данные публикуются с использованием просматриваемого API, когда публикуются с помощью hhtpie .. это нормально

Созданный на 11 апр. 2016  ·  4Комментарии  ·  Источник: encode/django-rest-framework

Контрольный список

  • [x] Я проверил, что эта проблема существует в ветке master среды Django REST.
  • [x] Я искал похожие проблемы как в открытых, так и в закрытых тикетах и ​​не смог найти дубликат.
  • [x] Это не вопрос использования. (Вместо этого их следует направлять в дискуссионную группу .)
  • [x] Это нельзя рассматривать как стороннюю библиотеку. (Мы предпочитаем, чтобы новая функциональность была представлена в виде сторонних библиотек, где это возможно.)
  • [x] Я свел вопрос к простейшему возможному случаю.
  • [x] Я включил неудачный тест в качестве запроса на вытягивание. (Если вы не можете этого сделать, мы все равно можем принять проблему.)

    Действия по воспроизведению

шаг 1 . Когда данные публикуются в apiview, pprint POST querydict.

@api_view(['GET', 'POST'])
def snippet_list (запрос):
если request.method == 'POST':
из pprint импортировать pprint как pp
пп(запрос.данные)
pp(запрос.POST)
сериализатор = SnippetSerializer (данные = запрос. данные)
если сериализатор.is_valid():
сериализатор.сохранить()
возврат ответа (serializer.data, status=status.HTTP_201_CREATED)
вернуть ответ (serializer.errors, статус = статус.HTTP_400_BAD_REQUEST)

шаг 2 . Разместите '{"code": "print 123"}' из доступного для просмотра API в snippet_list apiview.

Ожидаемое поведение

результат обоих pprint: {u'code': u'print 12dgdf3'}
<QueryDict: {}>

Фактическое поведение

результат обоих pprint: {u'code': u'print 12dgdf3'}
{u'code': u'print 12dgdf3'}

Самый полезный комментарий

mybad .. в запросе доступны только данные формы.

Правильно, ага. Используйте request.data .

Все 4 Комментарий

mybad .. в request.POST доступны только данные формы, я предположил, что любые данные, отправленные с использованием Http POST, будут в request.POST . закрываю этот вопрос, спасибо

mybad .. в запросе доступны только данные формы.

Правильно, ага. Используйте request.data .

если кому интересно где найти официальный ответ:

https://www.django-rest-framework.org/tutorial/2-requests-and-responses/#request-objects

Я до сих пор не понимаю, почему POST пусто. :(
Какой-нибудь учебник или ссылка?

Была ли эта страница полезной?
0 / 5 - 0 рейтинги