Django-rest-framework: request.POST está vacío querydict cuando los datos se publican usando una API navegable, cuando se publican con hhtpie... está bien

Creado en 11 abr. 2016  ·  4Comentarios  ·  Fuente: encode/django-rest-framework

Lista de Verificación

  • [x] He verificado que ese problema existe en la rama master del marco Django REST.
  • [x] He buscado problemas similares en tickets abiertos y cerrados y no puedo encontrar un duplicado.
  • [x] Esta no es una pregunta de uso. (Esos deben ser dirigidos al grupo de discusión en su lugar).
  • [x] Esto no se puede tratar como una biblioteca de terceros. (Preferimos que la nueva funcionalidad esté en forma de bibliotecas de terceros cuando sea posible).
  • [x] He reducido el asunto al caso más simple posible.
  • [x] He incluido una prueba fallida como solicitud de incorporación de cambios. (Si no puede hacerlo, aún podemos aceptar el problema).

    pasos para reproducir

paso 1 . Cuando los datos se publiquen en apiview, imprima el POST querydict.

@api_view(['OBTENER', 'POST'])
def snippet_list(solicitud):
if solicitud.método == 'POST':
desde pprint importar pprint como pp
pp(solicitud.datos)
pp(solicitud.POST)
serializador = SnippetSerializer(data=request.data)
si serializador.is_valid():
serializador.guardar()
Respuesta de retorno (serializador.datos, estado=estado.HTTP_201_CREATED)
Respuesta de retorno (serializador.errores, estado=estado.HTTP_400_BAD_REQUEST)

paso 2 . Publique '{"code": "print 123"}' desde la API navegable a snippet_list apiview.

Comportamiento esperado

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

Comportamiento real

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

Comentario más útil

mybad .. solo los datos del formulario están disponibles en request.POST

Correcto, sí. Usa request.data .

Todos 4 comentarios

mybad .. solo los datos de formulario están disponibles en request.POST, asumí que cualquier dato enviado usando Http POST estará en request.POST. cerrando este tema, tnx

mybad .. solo los datos del formulario están disponibles en request.POST

Correcto, sí. Usa request.data .

si a alguien le interesa donde encontrar la respuesta oficial:

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

Todavía no entiendo por qué POST está vacío. :(
¿Algún tutorial o enlace?

¿Fue útil esta página
0 / 5 - 0 calificaciones