编写一个基于类的视图

    1. from django.http import HttpResponse
    2. from django.views import View
    3. class Cbv1(View):
    4. """基于类的视图"""
    5. http_method_names = ['get']
    6. def get(self, request, *args, **kwargs):
    7. return HttpResponse('这是基于类的视图')

    加入到路由中

    1. urlpatterns = [
    2. path('cbv01/', views.Cbv1.as_view()),
    3. ]

    django.views.generic.base.View类
    基于主类的基本视图。所有其他基于类的视图都继承自这个基类。

    Views自带一个http_method_names属性,用来配置可以接收的请求方式,默认支持下面这些方式。

    1. http_method_names = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace']

    自动执行的方法流程图
    setup()
    dispatch()
    http_method_not_allowed()

    初始化函数
    image.png

    在dispatch方法中,利用反射来调用处理当前请求的方法
    1)先判断当前的请求方式是否被允许
    2)若被允许,则通过反射查看当前类中对应方法,没有找到时则返回HTTP方法不被允许的Python方法
    image.png