zoukankan      html  css  js  c++  java
  • DRF之视图类(mixin)源码解析

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

    具体源码实现:
    首先定义一个视图类,然后根据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),
  • 相关阅读:
    将n个不同的球放到m个相同的袋子里有多少种方案?

    平面分割直线2
    差分
    并查集(UnionFind)
    约瑟夫环公式
    Kruskal
    线性欧拉筛
    SPAF
    Dijkstra
  • 原文地址:https://www.cnblogs.com/hnlmy/p/10745771.html
Copyright © 2011-2022 走看看