其他分享
首页 > 其他分享> > drf的序列化和反序列化

drf的序列化和反序列化

作者:互联网

序列化器--Serializer

选项参数:

##### 序列化器的使用
序列化器的使用分两个阶段:
1.在客户端请求时,使用序列化器可以完成对数据的反序列化。
2.在服务器响应时,使用序列化器可以完成对数据的序列化。

ModelSerializer组件

    ModelSerializer与常规的Serializer相同,但提供了
    * 基于模型类自动生成一系列字段
    * 基于模型类自动为Serializer生成validators,比如unique_together
    * 包含默认的create()和update()的实现

定义

class BookInfoSerializer(serializes.ModelSerializer):
      class Meta:
          el=BookInfo
           fields='__all__'             
                  
model指明参照哪个模型类
fields指明为模型类的哪些字段生成

我们可以在python manage.py shell中查看自动生成的BookInfoSerializer的具体实现

指定字段

  """ 单表序列化总结
1)序列化与反序列功能可以整合成一个类,该类继承ModelSerializer
2)继承ModelSerializer类的资源序列化类,内部包含三部分
    Meta子类、局部钩子、全局钩子
    注:create和update方法ModelSerializer已经重写了,使用不需要重写
3)在Meta子类中:
    用model来绑定关联的Model类
    用fields来设置所有的序列化反序列化字段
    用extra_kwargs来设置系统的校验规则
4)重要的字段校验规则:
    read_only校验规则,代表该字段只参与序列化
    write_only校验规则,代表该字段只参与反序列化
    required校验规则,代表该字段在反序列化是是否是必填(True)还是选填(False),不能和read_only一起使用(规则冲突)
    规则细节:
        如果一个字段有默认值或是可以为空,没设置required规则,默认为False,反之默认值为True
        如果一个Model字段即没有设置read_only也没设置write_only,该字段默认参与序列化及反序列化
5)自定义序列化字段:在Model类中,定义方法属性(可以返回特殊值,还可以完成连表操作),在序列化类的fields属性中可以选择性插拔
6)自定义反序列化字段:在Serializer类中,自定义校验字段,校验规则也只能在声明字段时设置,自定义的反序列化字段(如re_pwd),
必须设置write_only为True
"""

标签:ModelSerializer,fields,校验,only,该字,序列化,drf
来源: https://www.cnblogs.com/lzss/p/11922448.html