图解各个View之间的关系
1.各个View之间的关系
1.1 首先弄懂CBV和FBV
FBV模式(Function Base View)
一个url对应一个函数,这样的视图模式叫做FBV
url(r'index$',views.index),
CBV模式(Class Base View)
一个url对应一个类中的方法
from django.views import View
class CBV(View):
def get(self,request):
return HttpResponse('CBV.get')
def post(self,request):
return HttpResponse('CBV.post')
url(r'cbv$', views.CBV.as_view()),
实际上是View类中执行as_view方法调用的dispatch方法,调用的getattr反射,执行的函数func.func()执行后会将返回值先给dispatch再返回给用户
1.2 view的执行流程
graph LR
Request-->as_view
as_view-->dispatch
dispatch-->通过反射查找get/post/delete等
1.3 ApiView到底做了什么?
1.4 Mixin和GenericAPIView又做了什么
https://blog.csdn.net/u013210620/article/details/79869661#createmodelmixin分析
1.5 看看ModelViewSet又做了啥
- 首先看继承关系
- 再重点看GenericViewSet
最后感谢大佬提供的源码分析参考
https://blog.csdn.net/u013210620/article/details/79869661#createmodelmixin分析