编写一个基于类的视图
from django.http import HttpResponse
from django.views import View
class Cbv1(View):
"""基于类的视图"""
http_method_names = ['get']
def get(self, request, *args, **kwargs):
return HttpResponse('这是基于类的视图')
加入到路由中
urlpatterns = [
path('cbv01/', views.Cbv1.as_view()),
]
django.views.generic.base.View类
基于主类的基本视图。所有其他基于类的视图都继承自这个基类。
Views自带一个http_method_names属性,用来配置可以接收的请求方式,默认支持下面这些方式。
http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']
自动执行的方法流程图
setup()
dispatch()
http_method_not_allowed()
初始化函数
在dispatch方法中,利用反射来调用处理当前请求的方法
1)先判断当前的请求方式是否被允许
2)若被允许,则通过反射查看当前类中对应方法,没有找到时则返回HTTP方法不被允许的Python方法