P10 Django Serialization 序列化的高级使用
序列化器 serializers
序列化器的作用
Django 序列化是将 Python 对象转换为可在网络上传输或存储的数据格式的过程,以及将这些数据格式反序列化回 Python 对象的过程。序列化通常用于将数据转换为 JSON、XML 或其他格式,以便在应用程序之间进行数据交换或在不同部分之间进行数据传输。
序列化将
queryset和instance转换为json/xml/yaml返回给前端反序列化与序列化则相反
Django 提供了一个名为 serializers 的模块,其中包含用于序列化和反序列化数据的工具。下面是一些在 Django 中进行序列化的常见用法:
使用
Django内置的serializers模块进行序列化和反序列化。
from django.core import serializers
# 序列化 QuerySet 为 JSON
data = serializers.serialize('json', MyModel.objects.all())
# 反序列化 JSON 数据并保存到数据库
for obj in serializers.deserialize('json', data):
obj.save() 使用
Django的JsonResponse来将模型数据作为JSON响应返回给客户端。
from django.http import JsonResponse
def get_data(request):
data = list(MyModel.objects.values())
return JsonResponse(data, safe=False) 使用第三方库如
Django Rest Framework(DRF)来构建RESTful API并进行序列化。DRF提供了强大的序列化和反序列化功能,以及视图、路由和其他API开发工具。
以上是一些基本的 Django 序列化概念和示例。根据需求和项目的复杂性,可以选择不同的序列化方法和工具。
定义序列化器
定义类,继承自 Serializer
通常新建一个 serializers.py 文件 撰写序列化内容
suah as目前只支持read_only只读label字段说明信息max_length最大长度
serializer.py
views.py
urls.py
a. 序列化单个对象
获取对象
data = Goods.objects.get(id=1)创建序列化器
serializer = GoodsSerializer(instance=data)转换数据
print(serializer.data)注意点:
instance是一个参数,用于指定要序列化或反序列化的Python对象。具体来说,它是一个类实例(Class Instance),通常是指一个从数据库或其他数据源中检索出来的模型实例(Model Instance)。当我们需要将一个模型实例转换为
JSON或其他格式时,可以使用Django的序列化器(Serializer)来实现。输出:
b. 序列化多个对象
最后更新于