视图中间件
视图中间件在Django调用视图函数之前执行。
一个视图中间件应当实现方法process_view(),其原型如下:
process_view(request,view_func,view_args,view_kwargs)
在Django调用视图中间件之前,已经找到了匹配的视图函数并提取了必要的参数, 因此,process_view()方法的后三个参数,分别代表了视图函数、位置参数列表 和关键字参数字典。
和请求中间件一样,视图中间件应当返回None或一个HttpResponse对象。如果 返回的是HttpResponse对象,Django将跳过其他视图中间件和后续视图函数处理 环节:
如果有多个视图中间件,那么将按照它们在配置对象的MIDDLEWARE_CLASSES属性中 的顺序执行。例如上图中,我们定义了三个视图中间件A、B和C。那么,当一个请求 进来时,Django将先执行A,如果A返回None,那么继续执行B,如果B也返回None, 那么继续执行C。
修改示例中的视图中间件A,当用户请求/report/123/时,返回404响应。