作用:
1. 序列化,序列化器会把模型对象转换成字典,经过response以后变成json字符串
2. 反序列化,把客户端发送过来的数据,经过request以后变成字典,序列化器可以把字典转成模型
3. 反序列化,完成数据校验功能
-
定义序列化器
- Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。
接下来,为了方便演示序列化器的使用,我们先创建一个新的子应用sers
python manage.py startapp sers
from django.db import models # Create your models here. class Book(models.Model): title = models.CharField(max_length=32,verbose_name="书籍名称") price = models.IntegerField(verbose_name="价格") pub_date = models.DateField(verbose_name="出版日期")
我们想为Book模型类提供一个序列化器,可以定义如下:
from rest_framework import serializers class BookSerializer(serializers.Serializer): title = serializers.CharField() price = serializers.IntegerField() pub_date = serializers.DateField()
注意:serializer不是只能为数据库模型类定义,也可以为非数据库模型类的数据定义。serializer是独立于数据库之外的存在。
- Django REST framework中的Serializer使用类来定义,须继承自rest_framework.serializers.Serializer。
-
创建Serializer对象
-
定义好Serializer类后,就可以创建Serializer对象了。
Serializer的构造方法为:Serializer(instance=None, data=empty, **kwarg)
-
说明:
-
用于序列化时,将模型类对象传入instance参数
-
用于反序列化时,将要被反序列化的数据传入data参数
-
除了instance和data参数外,在构造Serializer对象时,还可通过context参数额外添加数据,如 serializer = AccountSerializer(account, context={'request': request})
-
-
通过context参数附加的数据,可以通过Serializer对象的context属性获取。
-
使用序列化器的时候一定要注
-
-