DRF源码分析——序列化

一、序列化

1、类的基本知识:

类实例化之前会执行__new__方法,用于控制一个类的生成实例的过程生成一个空对象,子类没有的就去找父类的__new__,

__new__ 执行完以后才能执行__init__构造方法

2、以ModelSerializer为例,无__new__方法,其父类Serlizer也没有,在往上找BaseSerlizer中的__new__方法
instance有值就是序列化

data有值就是反序列化

执行完__new__后执行__init__,根据many的值的不同执行的构造,

3、当many=True时执行cls.many_init方法采用LIstSerializer处理,此时我们对象对象的data属性获取结果(res.data)

4、父类BaseSerlize 的属性方法data源码:

二、校验数据

全局校验:validate

局部校验:validate_字段名字  局部校验

源码分析

1、只有调用了is_valid才走校验

猜你喜欢

转载自www.cnblogs.com/king-home/p/11134839.html