所谓类视图就是用类定义的视图,其主要支持客户端在用不同的请求方式发起的HTTP请求。
首先,我们需要明确一下类视图的好处:
1.代码可读向高;
2.相对于视图函数具有更高的代码复用性;
3.便于维护。
类视图的定义格式如下:
# 1. 导入视图模块from django.views.generic import View class ObjectView(View): """2. 定义一个类视图""" # 3.编写视图函数 def get(self, request): """处理GET请求""" return HttpResponse(‘以GET请求方式发起的HTTP请求‘) def post(self, request): """处理POST请求""" return HttpResponse(‘以POST请求方式发起的HTTP请求‘)
在类视图定义的时候我们需要注意一下几点:
1. 类视图必须继承View类;
2. 类视图中的方法必须以请求方式的小写形式来命名;
视图函数我们编写完了,那么接下我们就要配置路由了。
我们需要在子路由中添加上一下代码:
urlpatterns = [ # 视图函数:注册 # url(r‘^index/$‘, views.index, name=‘index‘), # 类视图:注册 url(r‘^index_get/$‘, views.ObjectView.as_view(), name=‘ObjectView‘), ]
这里注意类视图一定要调用as_view()方法。
下面我来简述一下as_view()方法的执行流程:
1. 类视图在路由中调用as_view()方法,
2. as_view()方法语法上是一个闭包,它会调用它的内层函数view(),
3. view()会将请求的对象及参数接收,传递给dispatch()方法并调用dispatch()方法,
4. dispatch()方法会接收传递的参数,并且通过python中的底层函数getattr()获取到根据请求方式确定的类视图中的方法。
5. 最后再将方法的引用逐层返回,从而完成类视图中的方法的调用。
为类视图添加装饰器
装饰器对大家来说,我相信都不
原文地址:https://www.cnblogs.com/chao666/p/12109972.html
时间: 2024-10-09 17:56:09