Django-rest-framework: request.POST est un querydict vide lorsque les données sont publiées à l'aide d'une API navigable, lorsqu'elles sont publiées avec hhtpie .. c'est bien

Créé le 11 avr. 2016  ·  4Commentaires  ·  Source: encode/django-rest-framework

Liste de contrôle

  • [x ] J'ai vérifié que ce problème existe avec la branche master du framework Django REST.
  • [x ] J'ai recherché des problèmes similaires dans les tickets ouverts et fermés et je ne trouve pas de doublon.
  • [x] Ceci n'est pas une question d'utilisation. (Ceux-ci devraient plutôt être dirigés vers le groupe de discussion .)
  • [x] Cela ne peut pas être traité comme une bibliothèque tierce. (Nous préférons que les nouvelles fonctionnalités soient sous la forme de bibliothèques tierces lorsque cela est possible.)
  • [x] J'ai réduit le problème au cas le plus simple possible.
  • [x] J'ai inclus un test ayant échoué en tant que demande d'extraction. (Si vous n'êtes pas en mesure de le faire, nous pouvons toujours accepter le problème.)

    Étapes à reproduire

étape 1 . Lorsque les données sont publiées sur apiview , pprint le requête POST.

@api_view(['OBTENIR', 'POSTER'])
def snippet_list(request):
si request.method == 'POST' :
à partir de pprint importer pprint en tant que pp
pp(demande.données)
pp(demande.POST)
sérialiseur = SnippetSerializer(data=request.data)
si serializer.is_valid() :
sérialiseur.save()
renvoyer la réponse (serializer.data, status=status.HTTP_201_CREATED)
renvoyer la réponse (serializer.errors, status=status.HTTP_400_BAD_REQUEST)

étape 2 . Publiez '{"code": "print 123"}' depuis l'API navigable vers snippet_list apiview.

Comportement attendu

résultat des deux pprint : {u'code': u'print 12dgdf3'}
<QueryDict: {}>

Comportement réel

résultat des deux impressions : {u'code': u'print 12dgdf3'}
{u'code': u'print 12dgdf3'}

Commentaire le plus utile

mybad .. seules les données de formulaire sont disponibles dans request.POST

Exact, ouais. Utilisez request.data .

Tous les 4 commentaires

mybad .. seules les données de formulaire sont disponibles dans request.POST , j'ai supposé que toutes les données envoyées à l'aide de Http POST seront dans request.POST . fermer ce problème, tnx

mybad .. seules les données de formulaire sont disponibles dans request.POST

Exact, ouais. Utilisez request.data .

si quelqu'un est intéressé où trouver la réponse officielle:

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

Je ne comprends toujours pas pourquoi POST est vide. :(
Un tuto ou un lien ?

Cette page vous a été utile?
0 / 5 - 0 notes