Disons result = {'a': 1, 'b': 2, 'c': 3}
Y a-t-il une différence entre ces deux:
return JsonResponse(a)
et
return HttpResponse(json.dumps(a))
3 Réponses :
Comme doc , la principale différence est
Django utilise des objets de requête et de réponse pour transmettre l'état à travers le système. Chaque vue est responsable du renvoi d'un objet HttpResponse. En utilisant HttpResponse, vous devez d'abord sérialiser votre objet en JSON.
Considérant que,
Depuis la version 1.7, Django compte avec la classe intégrée JsonResponse , qui est une sous-classe de HttpResponse . Son en-tête Content-Type par défaut est défini sur application / json, ce qui est vraiment pratique. Il est également livré avec un encodeur JSON, vous n'avez donc pas besoin de sérialiser les données avant de renvoyer l'objet de réponse.
Vous pouvez également consulter ce doc:
Essayez ceci, cela passera
return JsonResponse("abcd")
Mais si vous le faites
return HttpResponse(json.dumps("abcd"))
JsonResponse vous donnera TypeError si vous envoyez des données non sérialisables (Sauf safe = False dans JsonResponse)
Il est donc plus sûr d'envoyer des données json dans JsonResponse code>
Et dans l'en-tête JsonResponse définira Content-Type: application / json d'autre part, HttpResponse définira Content-Type: texte / html; jeu de caractères = utf-8