JsonResponse对象

本文介绍了Django框架中JsonResponse类的基本用法,包括如何序列化非字典对象及自定义JSON编码器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.JsonResponse

 

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

 

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

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

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

(2)encoder,默认为 django.core.serializers.json.DjangoJSONEncoder,用于序列化data。

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

(4)json_dumps_params 是一个字典,它是在生成响应时,传给 json.dumps() 的参数。

2.用法

 

from django.http import JsonResponse
 response = JsonResponse({'foo': 'bar'})
 response.content
'{"foo": "bar"}'      // 序列化非字典对象

 

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

response = JsonResponse([1, 2, 3], safe=False)
如果不传递safe=False,将抛出一个TypeError。

3.修改默认的JSON 编码器

 如果你需要使用不同的 JSON 编码器类,你可以传递 encoder 参数给构造函数:

response = JsonResponse(data, encoder=MyJSONEncoder)

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值