zoukankan      html  css  js  c++  java
  • 3. Django每日一码 之 Serializers 源码

    2019-7-6 今日源码:rest-framework 序列化Serializers

    序列化组件Serializers 源码分析

    首先,它需要 data 、many 、 instance,其中 instance 序列化,data为反序列化,many=True时为多条数据。

    1)先从many为入口切入。

    查看源码,可以发现,在父类BaseSerializer中,先调用_ _ new_ _方法,如果many=True,生成ListSerializer对象,如果为False,生成Serializer对象

    2)继续以data为切入口

    先从自己开始查找data,没有再去父类查找一级一级找

    发现在Serializer 中有data方法,然而发现它是继承父类的,继续去父类中查找

    发现又调用to_representation 方法,首先从自身查找,最后在它父类的父类Serializer中找到to_representation方法。

    Serializer类里有to_representation方法,for循环执行attribute = field.get_attribute(instance)

    再去查找 field.get_attribute ,最后在Field中找到

    self.source_attrs就是被切分的source,然后执行get_attribute方法,source_attrs,当参数传过去,判断是方法就加括号执行,是属性就把值取出来。

    3) instance 序列化

    在执行save时,instance是在需要修改数据的时候使用,传入instance为修改,不传为新增

    这就是 rest-framework 之 序列化组件源码分析,请大家积极找错纠正哈

  • 相关阅读:
    Hive 使用问题集锦
    scala def/val/lazy val区别以及call-by-name和call-by-value
    spark学习流程
    Hadoop
    Hive
    Chrome快捷键
    Java API帮助文档
    Java 访问修饰符与非访问修饰符
    java 关键字
    Solr配置Ikanalyzer分词器
  • 原文地址:https://www.cnblogs.com/liqianglog/p/11139327.html
Copyright © 2011-2022 走看看