Python学习————CBV模型

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

img

urls.py

urlpatterns = [
    path('test/', views.Test.as_view()),
]

img

as_view()源码:

img

在urls.py中views.Test.as_view() 这里存放的是一个内存地址,as_view()加括号被调用到,这里执行了as_view方法里的view方法

img

核心是dispatch方法,在dispatch方法中完成了分发功能。

img

CBV模型

  • 在views中写一个类,继承View,里面写get方法,post方法
  • 在路由中配置: url(r'^test/', views.Test.as_view()),实际上第二个参数位置,放的还是一个函数内存地址
  • 当请求来了,就会执行第二个参数(request,参数),本质上执行view()
  • view内部调用了dispatch()方法
  • dispatch分发方法,根据请求方式不同,执行的方法不同
原文地址:https://www.cnblogs.com/x945669/p/13787418.html