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),