cbv是基于类的视图

# 首先要在路由层配置:

Django drf:cbv(class base view)源码分析-LMLPHP

# 找到类绑定方法as_view

Django drf:cbv(class base view)源码分析-LMLPHP

# 点开dispatch的方法

Django drf:cbv(class base view)源码分析-LMLPHP

# http_method_names其实就是方法的列表

Django drf:cbv(class base view)源码分析-LMLPHP

整个流程:

  1.写一个基于类的视图

  2.然后在路由层配置,第二参数写as_view,加括号执行

  3.由于父级中没有需要到view中找方法,as_view方法其实是一个闭包函数,返回的一个函数地址加括号执行

  4.as_view中执行了dispatch方法,就是将视图类中的参数拿到,和列表中方法比较,如果有返回执行,没有就提示错误信息

05-11 15:49