Python django中JsonResponse和HttpResponse之间的区别是什么

Python django中JsonResponse和HttpResponse之间的区别是什么,python,django,Python,Django,让我们假设result={'a':1,'b':2,'c':3} 这两者之间有区别吗: return HttpResponse(json.dumps(a)) 及 作为各州,主要区别在于 自动序列化 适当的内容类型 默认情况下更安全的输入检查 Django使用请求和响应对象通过系统传递状态。每个视图负责返回一个HttpResponse对象。使用HttpResponse,您需要首先将对象序列化为JSON 鉴于 自1.7版以来,Django使用内置的JsonResponse类进行计数,该类是Http

让我们假设
result={'a':1,'b':2,'c':3}

这两者之间有区别吗:

return HttpResponse(json.dumps(a))

作为各州,主要区别在于

  • 自动序列化
  • 适当的内容类型
  • 默认情况下更安全的输入检查

Django使用请求和响应对象通过系统传递状态。每个视图负责返回一个HttpResponse对象。使用HttpResponse,您需要首先将对象序列化为JSON

鉴于

自1.7版以来,Django使用内置的
JsonResponse
类进行计数,该类是
HttpResponse
的子类。它的默认内容类型头被设置为application/json,这非常方便。它还附带一个JSON编码器,因此在返回响应对象之前不需要序列化数据

您也可以参考文档:

试试这个,它会通过的

return HttpResponse(json.dumps("abcd"))
但如果你这样做了

return JsonResponse("abcd")
JsonResponse
如果您发送不可序列化的数据,将给您
TypeError
(除非JsonResponse中
safe=False

因此,在
JsonResponse

而在header中
JsonResponse
将设置
内容类型:application/json
,另一方面
HttpResponse
将设置
内容类型:text/html;字符集=utf-8

  • HTTPResponse

    • HTTPResponse(内容=响应正文,内容类型=响应正文数据类型,状态=状态代码)
    • 适用于字符串、模板
    • class-HttpResponse(HttpResponseBase):
  • jsonresponse

    • 它是HTTPResponse的一个子类,
      • 适合处理json格式的数据,但不能返回模板
      • class-JsonResponse(HttpResponse):
提及

return JsonResponse("abcd")