类似图/中间键
【类似图/中间键】在Django中也可以使用类来定义一个视图,称为类视图。使用类视图可以将视图对应的不同请求方式以类中的不同方法来区别定义。
配置路由时,使用类视图的as_view()方法来添加。
urlpatterns = [
# 类视图:注册
url(r'^register/$', views.RegisterView.as_view(), name='register'),
]
类视图使用装饰器:
在URL配置中装饰
urlpatterns = [
url(r'^demo/$', my_decorate(DemoView.as_view()))
]
在类视图中装饰:
@method_decorator(my_decorator)
def dispatch(self, *args, **kwargs):
method_decorator装饰器还支持使用name参数指明被装饰的方法
为全部请求方法添加装饰器
@method_decorator(my_decorator, name='dispatch')/
为特定请求方法添加装饰器
@method_decorator(my_decorator, name='get')
method_decorator的作用是为函数视图装饰器补充第一个self参数,以适配类视图方法。
中间件的定义方法
def my_middleware(get_response):
print('init 被调用')
def middleware(request):
print('before request 被调用')
response = get_response(request)
print('after response 被调用')
return response
return middleware
定义好中间件后,需要在settings.py 文件中添加注册中间件
多个中间件的执行顺序
在请求视图被处理前,中间件由上至下依次执行
在请求视图被处理后,中间件由下至上依次执行