Django CBV模型源码运行流程
views.py
class Test(View):
def get(self, request, *args, **kwargs):
return HttpResponse('cbv_get')
def post(self, request, *args, **kwargs):
return HttpResponse('cbv_post')
urls.py
urlpatterns = [
path('test/', views.Test.as_view()),
]
as_view()源码:
在urls.py中views.Test.as_view() 这里存放的是一个内存地址,as_view()加括号被调用到,这里执行了as_view方法里的view方法
核心是dispatch方法,在dispatch方法中完成了分发功能。
CBV模型
- 在views中写一个类,继承View,里面写get方法,post方法
- 在路由中配置: url(r'^test/', views.Test.as_view()),实际上第二个参数位置,放的还是一个函数内存地址
- 当请求来了,就会执行第二个参数(request,参数),本质上执行view()
- view内部调用了dispatch()方法
- dispatch分发方法,根据请求方式不同,执行的方法不同