JsonResponse对象

class JsonResponse(data,encoder = DjangoJSONEncoder,safe = True,json_dumps_params = None ,** kwargs)[source]

HttpResponse 的一个子类,帮助用户创建JSON 编码的响应。 它从父类继承大部分行为,并具有以下不同点:

它的默认Content-Type 头部设置为application/json

它的第一个参数data,应该为一个dict 实例。 如果safe 参数设置为False,它可以是任何可JSON 序列化的对象。

encoder,默认为 django.core.serializers.json.DjangoJSONEncoder,用于序列化data。 关于这个序列化的更多信息参见JSON serialization

布尔参数safe 默认为True。 如果设置为False,可以传递任何对象进行序列化(否则,只允许dict 实例)。 如果safe 为True,而第一个参数传递的不是dict对象,将抛出一个TypeError

json_dumps_params参数是传递给用于生成响应的json.dumps()调用的关键字参数的字典。

用法:

典型的用法如下:

>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'}) #
>>> response.content
b'{"foo": "bar"}'
from django.http import JsonResponse
def diggit(request):
response_stat={"state":True}
return JsonResponse(response_stat) #这个方法直接给你序列化,不需要这样写HttpResponse(json.dumps(response_stat),
    # 而且返回到ajax的值不需要反向解析了

序列化非字典对象(http://python.usyiyi.cn/documents/Django_111/ref/request-response.html#serializing-non-dictionary-objects)

若要序列化非dict 对象,你必须设置safe 参数为False:

>>> response = JsonResponse([1, 2, 3], safe=False)
如果不传递safe=False,将抛出一个TypeError
原文地址:https://www.cnblogs.com/gongxu/p/8572344.html