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 之 序列化组件源码分析,请大家积极找错纠正哈

3. Django每日一码 之 Serializers 源码的更多相关文章

  1. Django(44)drf序列化源码分析(1)

    序列化与反序列化   一般后端数据返回给前端的数据格式都是json格式,简单易懂,但是我们使用的语言本身并不是json格式,像我们使用的Python如果直接返回给前端,前端用的javascript语言 ...

  2. CBV源码分析+APIVIew源码分析

    {drf,resful,apiview,序列化组件,视图组件,认证组件,权限组件,频率组件,解析器,分页器,响应器,URL控制器,版本控制} 一.CBV源码分析准备工作: 新建一个Django项目 写 ...

  3. spring源码解析——spring源码导入eclipse

    一.前言     众所周知,spring的强大之处.几乎所有的企业级开发中,都使用了spring了.在日常的开发中,我们是否只知道spring的配置,以及简单的使用场景.对其实现的代码没有进行深入的了 ...

  4. [译] 给PHP开发者的PHP源码-第一部分-源码结构

    文章来自:http://www.hoohack.me/2016/02/04/phps-source-code-for-php-developers-ch 原文:http://blog.ircmaxel ...

  5. ios源码-ios游戏源码-ios源码下载

    游戏源码   一款休闲类的音乐小游戏源码 该源码实现了一款休闲类的音乐小游戏源码,该游戏的源码很简单,而且游戏的玩法也很容易学会,只要我们点击视图中的grid,就可以 人气:2943运行环境:/Xco ...

  6. 【转】编译Android系统源码和内核源码

    原文网址:http://blog.csdn.net/jiangwei0910410003/article/details/37988637 好长时间没有写blog了,之所以没有写,主要还是工作上的事, ...

  7. 【转】Android手机客户端关于二维码扫描的源码--不错

    原文网址:https://github.com/SkillCollege/QrCodeScan QrCodeScan 这是Android手机客户端关于二维码扫描的源码,使用了高效的ZBar解码库,并修 ...

  8. 【安卓本卓】Android系统源码篇之(一)源码获取、源码目录结构及源码阅读工具简介

    前言        古人常说,“熟读唐诗三百首,不会作诗也会吟”,说明了大量阅读诗歌名篇对学习作诗有非常大的帮助.做开发也一样,Android源码是全世界最优秀的Android工程师编写的代码,也是A ...

  9. Spring源码-循环依赖源码解读

    Spring源码-循环依赖源码解读 笔者最近无论是看书还是从网上找资料,都没发现对Spring源码是怎么解决循环依赖这一问题的详解,大家都是解释了Spring解决循环依赖的想法(有的解释也不准确,在& ...

随机推荐

  1. WPF 数据模板使用值转换器

    <Window x:Class="CollectionBinding.MainWindow"        xmlns="http://schemas.micros ...

  2. windows程序中拷贝文件的选择

    最近需要在Windows下拷贝大量小文件(数量在十万级别以上).写了些拷贝文件的小程序,竟然发现不同的选择,拷贝的速度有天壤之别! 现有这样的测试数据:1500+小文件,总大小10M左右.现用不同方法 ...

  3. SignalR QuickStart

    原文:SignalR QuickStart SignalR 是一个集成的客户端与服务器库,基于浏览器的客户端和基于 ASP.NET 的服务器组件可以借助它来进行双向多步对话. 换句话说,该对话可不受限 ...

  4. HTTP、FTP状态码 汇总

    原文:HTTP.FTP状态码 汇总 HTTP1xx - 信息提示(这些状态代码表示临时的响应.客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应. ) • 100 - 继续.• 101 - ...

  5. PySide——Python图形化界面入门教程(六)

    PySide——Python图形化界面入门教程(六) ——QListView和QStandardItemModel 翻译自:http://pythoncentral.io/pyside-pyqt-tu ...

  6. Advanced Installer 安装前卸载旧版本的办法

    原文:Advanced Installer 安装前卸载旧版本的办法 Advanced Installer这个工具百度出来的资料太少了. 在我们平常打包的工作中,经常遇到的一个问题是,如何能在安装新版本 ...

  7. Ptypes一个开源轻量级的c++库,包括对一些I/O操作、网络通信、多线程和异常处理的封装

    C++开源项目入门级:Ptypes    Ptypes一个开源轻量级的c++库,包括对一些I/O操作.网络通信.多线程和异常处理的封装.虽然代码有限,包括的内容不少,麻雀虽小,五脏俱全.    提高: ...

  8. 使用 Napa 创建并调试一个 Office 内容应用 – Hello World

    原文地址:http://simpeng.net/office-add-in/%e4%bd%bf%e7%94%a8-napa-%e5%88%9b%e5%bb%ba%e5%b9%b6%e8%b0%83%e ...

  9. 常见的几个Qt编程问题的处理(转自QT中文论坛)(挺实用的)

    1.如何在窗体关闭前自行判断是否可关闭答:重新实现这个窗体的closeEvent()函数,加入判断操作 void MainWindow::closeEvent(QCloseEvent*event){i ...

  10. 什么水平算精通C++ Builder?

    主 题:   大家讨论一下什么水平算精通C++ Builder?(我这样算什么,马上要毕业了,不知道如何评价自己)         //C++ builder 使用时间3年 熟悉VCL源代码 开发过3 ...