让我们说result = {'a': 1, 'b': 2, 'c': 3}
这两者之间有区别吗?
return HttpResponse(json.dumps(a))
和
return JsonResponse(a)
答案 0 :(得分:2)
doc指出,主要区别是
答案 1 :(得分:1)
Django使用请求和响应对象在系统中传递状态。每个视图负责返回HttpResponse对象。使用HttpResponse,您需要首先将对象序列化为JSON。
而
从1.7版开始,Django会使用内置的JsonResponse
类,它是HttpResponse
的子类。它的默认Content-Type标头设置为application / json,这确实很方便。它还带有JSON编码器,因此您无需在返回响应对象之前对数据进行序列化。
您还可以参考this文档:
答案 2 :(得分:0)
尝试一下,它将通过
return HttpResponse(json.dumps("abcd"))
但如果您这样做
return JsonResponse("abcd")
JsonResponse
将为您提供TypeError
,如果您发送不可序列化的数据(除非在JsonResponse中为safe=False
)
因此,在JsonResponse
并且在标头JsonResponse
中将设置Content-Type: application/json
,另一方面,HttpResponse
中将设置Content-Type: text/html; charset=utf-8
答案 3 :(得分:0)
HTTPResponse
class HttpResponse(HttpResponseBase):
JsonReponse
class JsonResponse(HttpResponse):