首先定义一个类视图(CBV)

django类视图的as_view执行流程

 

   在urls.py文件中写上路由对应关系

django类视图的as_view执行流程

 

   点击as_view()方法进入到源码页面.可以看到它是一个类方法.返回值是view函数名.当有url进行访问时,自动执行view函数.view函数会自动执行self.dispatch函数.

django类视图的as_view执行流程

 

 

 

  接下来,进入到dispatch函数中.首先在这有1个条件判断.如果request.method.lower()代表http的8种请求方式在self.http_method_names(View类的类属性)中那么请求方式就被允许返回给handler.如果请求方式不在self.http_method_names中,执行黄色圈出的self.http_method_not_allowed,首先会记录logging.warning错误的日志,然后实例化HttpResponseNotAllowed类,自动执行__init__和__repr__方法返回具体的报错信息.

django类视图的as_view执行流程

 

django类视图的as_view执行流程

django类视图的as_view执行流程

 

 

 

 

 

   总结下:

  1. 项目启动时,运行urls.py文件
    1. url('a/',views.A.as_view())
    2. A.as_view()执行-----> view函数
  2. 请求到来时,执行view函数:
    1. 实例化A----->self
    2. self.request = request
    3. 执行View中self.dispatch(request,*args,**kwargs)
      1. 判断请求方式是否被允许
        1. 允许:通过反射获取请求方式对应的方法----->handler
        2. 不允许:self.http_method_not_allowed----->handler
      2. 执行handler获取到响应

相关文章:

  • 2021-11-26
  • 2021-12-18
  • 2021-07-06
  • 2022-12-23
  • 2021-06-12
猜你喜欢
  • 2021-06-14
  • 2021-08-08
  • 2022-12-23
  • 2021-11-20
  • 2022-12-23
  • 2021-08-22
  • 2021-05-08
相关资源
相似解决方案