【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客
《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)
在Django框架中,还定义了一个HttpResponse类的子类——JsonResponse类,是用于创建JSON编码类型响应的快捷类。
JsonResponse类的定义如下:
class JsonResponse(
data,
encoder=DjangoJSONEncoder,
safe=True,
json_dumps_params=None,
**kwargs
)
该类从父类HttpResponse中继承大部分行为,并增加了一部分功能,具体说明如下:
- 默认Content-Type头部设置为application/json。
- data参数应该为一个字典数据类型。如果后面的safe参数设置为False,则该参数可以为任意JSON-serializable(序列化)对象。
- encoder参数默认设置为django.core.serializers.json.DjangoJSONEncoder,用于序列化数据。
- safe参数只有设置为False时,才可以将任何可JSON序列化的对象作为data参数的值。如果safe参数设置为True,则同时将一个非字典型对象传递给data参数时,会触发一个TypeError错误。
- json_dumps_params参数通过将一个字典类型关键字参数传递给json.dumps()方法,来生成一个响应。
关于JsonResponse类的典型使用方法,示例代码如下:
>>> from django.http import JsonResponse
>>> response = JsonResponse({'foo': 'bar'})
>>> response.content
b'{"foo": "bar"}'
若要序列化非dict对象,则必须将safe参数设置为False,示例代码如下:
>>> response = JsonResponse([1, 2, 3], safe=False)
如果不传递safe=False,将抛出一个TypeError。
如果需要使用不同的JSON编码器类,可以传递encoder参数给构造函数,示例代码如下:
>>> response = JsonResponse(data, encoder=MyJSONEncoder)
《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)