同样的增删改查操作,如果我们还像之前序列化组件那样做,代码重复率过多,所以我们用视图表示:

具体源码实现:
首先定义一个视图类,然后根据mixin点进去有五个封装好的方法,这五个方法共有的属性就是都需要一个queryset和序列化,所以五个方法都需要写这两个东西。

前边是查询单条数据,后边的类是查询多条数据.要区分开。

其中对应关系

ListModelMixin----------get----------单条数据的查询
CreateModelMixin-------post---------增加单条数据
UpdateModelMixin------put----------对多条数据的修改
DestroyModelMixin-----delete-------可以对多条数据
RetrieveModelMixin-----get----------查询多条数据

这样能解决问题,但是重复的代码似乎也不少。

DRF又给我们封装了:

源码就不一一走了。

 当然这已经很简单了,但是我们还有更简单的!让封装更彻底一下

源码分析:

我们先看查询多个数据的,项目启动,先定义一个类以及url设置。

点进去ModelViewSet:没有as_view方法继续往后看。

进入ViewSetMixxin看有没有这个方法。

果然是有的,

#url(r'^authors/$', views.AuthorsView.as_view({"get":"list","post":"create"})),
#url(r'^authors/$', ViewSetMixin.as_view({"get":"list","post":"create"})),
#url(r'^authors/$', ViewSetMixin.view),

DRF之视图类(mixin)源码解析的更多相关文章

  1. 线程池 ThreadPoolExecutor 类的源码解析

    线程池 ThreadPoolExecutor 类的源码解析: 1:数据结构的分析: private final BlockingQueue<Runnable> workQueue;  // ...

  2. 多线程爬坑之路-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析

    Atomic原子类:为基本类型的封装类Boolean,Integer,Long,对象引用等提供原子操作. 一.Atomic包下的所有类如下表: 类摘要 AtomicBoolean 可以用原子方式更新的 ...

  3. ThreadLocal 类 的源码解析以及使用原理

    1.原理图说明 首先看这一张图,我们可以看出,每一个Thread类中都存在一个属性 ThreadLocalMap 成员,该成员是一个map数据结构,map中是一个Entry的数组,存在entry实体, ...

  4. [Java多线程]-J.U.C.atomic包下的AtomicInteger,AtomicLong等类的源码解析

    Atomic原子类:为基本类型的封装类Boolean,Integer,Long,对象引用等提供原子操作. 一.Atomic包下的所有类如下表: 类摘要 AtomicBoolean 可以用原子方式更新的 ...

  5. SpringBoot源码学习1——SpringBoot自动装配源码解析+Spring如何处理配置类的

    系列文章目录和关于我 一丶什么是SpringBoot自动装配 SpringBoot通过SPI的机制,在我们程序员引入一些starter之后,扫描外部引用 jar 包中的META-INF/spring. ...

  6. Android源码解析——LruCache

    我认为在写涉及到数据结构或算法的实现类的源码解析博客时,不应该急于讲它的使用或马上展开对源码的解析,而是要先交待一下这个数据结构或算法的资料,了解它的设计,再从它的设计出发去讲如何实现,最后从实现的角 ...

  7. 面试必备:ArrayList源码解析(JDK8)

    面试必备:ArrayList源码解析(JDK8) https://blog.csdn.net/zxt0601/article/details/77281231 概述很久没有写博客了,准确的说17年以来 ...

  8. DRF介绍,DRF项目开发,DRF项目的视图类的dispatch源码解析

    目录 一.DRF介绍 1. 什么是DRF 2. 为什么要用DRF (1)使用DRF的原因 (2)站在开发者的角度来说用DRF的好处(暂时列举这么多) 二.用DRF开发后端项目 三.APIView请求生 ...

  9. 23.mixin类源码解析

    mixin类用于提供视图的基本操作行为,注意mixin类提供动作方法,而不是直接定义处理程序方法 例如.get() .post(),这允许更灵活的定义,mixin从rest_framework.mix ...

随机推荐

  1. 如何查看github排行热度

    github热门趋势 https://github.com/trending github star排行榜 github输入:star:>数字,来查看star数的仓库: 输入:location: ...

  2. Win10 高分屏软件界面字体模糊问题解决

    只需要将自定义缩放值改为 124% 即可

  3. yum安装mysql-5.6(centos7)

    centos 7.3 安装mysql 5.6 rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm yu ...

  4. Python Pandas 箱线图

    各国家用户消费分布 import numpy as np import pandas as pd import matplotlib.pyplot as plt data = { 'China': [ ...

  5. 关于 systemctl --user status 报错的问题

    关于 systemctl --user enable mpd 报错: Failed to connect to bus: No such file or directory 因为arch脚本中,sys ...

  6. 窗口,父窗口parentwindow,所有者窗口ownerwindow

    参考文档:http://www.cnblogs.com/fwycmengsoft/p/4026592.html 一. parent:创建者,owner:所有者 小玉的父母生下小玉,养到8岁,卖给贾府当 ...

  7. python全栈开发 * 11知识点汇总 * 1806011

    一.函数名的运⽤, 第⼀类对象 函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量 1. 函数名的内存地址def func(fn): print(fn)print(func) # ...

  8. JS------获取一个时间区间的所有天

    1:获取一个时间区间的所有日期 function getDiffDate(start, end) { var startTime = getDate(start); var endTime = get ...

  9. 【立体几何】分类讨论很细节 Gym - 101967I Путешествие по тору

    http://codeforces.com/gym/101967/attachments 题意:定义了一个甜甜圈.(torus) 不是让你二重积分啦233 现在有一个星球是甜甜圈形状的,它有四条很关键 ...

  10. Ps去除背景

    http://www.16xx8.com/photoshop/jiaocheng/26905.html