Django-rest-framework: request.POST é querydict vazio quando os dados são postados usando api navegável, quando postados com hhtpie .. tudo bem

Criado em 11 abr. 2016  ·  4Comentários  ·  Fonte: encode/django-rest-framework

Lista de controle

  • [x] Eu verifiquei que esse problema existe no branch master do framework REST do Django.
  • [x ] Procurei problemas semelhantes em tickets abertos e fechados e não encontrei uma duplicata.
  • [x] Esta não é uma questão de uso. (Em vez disso, eles devem ser direcionados para o grupo de discussão .)
  • [x] Isso não pode ser tratado como uma biblioteca de terceiros. (Preferimos que a nova funcionalidade esteja na forma de bibliotecas de terceiros sempre que possível.)
  • [x] Reduzi o problema ao caso mais simples possível.
  • [x] Incluí um teste com falha como um pull request. (Se você não conseguir fazer isso, ainda podemos aceitar o problema.)

    Passos para reproduzir

passo 1 . Quando os dados forem postados em apiview , pprint o POST querydict.

@api_view(['GET', 'POST'])
def snippet_list(request):
if request.method == 'POST':
de pprint importar pprint como pp
pp(solicitação.dados)
pp(solicitação.POST)
serializer = SnippetSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

passo 2 . Poste '{"code": "print 123"}' da API navegável para snippet_list apiview.

Comportamento esperado

resultado de ambos pprint: {u'code': u'print 12dgdf3'}
<QueryDict: {}>

Comportamento real

resultado de ambos pprint: {u'code': u'print 12dgdf3'}
{u'code': u'print 12dgdf3'}

Comentários muito úteis

mybad .. apenas os dados do formulário estão disponíveis em request.POST

Correto, sim. Use request.data .

Todos 4 comentários

mybad .. apenas form-data está disponível em request.POST , eu assumi que qualquer dado enviado usando Http POST estará em request.POST . fechando esta questão, tnx

mybad .. apenas os dados do formulário estão disponíveis em request.POST

Correto, sim. Use request.data .

se alguém estiver interessado onde encontrar a resposta oficial:

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

Eu ainda não entendo porque POST está vazio. :(
Algum tutorial ou link?

Esta página foi útil?
0 / 5 - 0 avaliações