Django: 路由与视图 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

视图中间件

视图中间件在Django调用视图函数之前执行。

一个视图中间件应当实现方法process_view(),其原型如下:

process_view(request,view_func,view_args,view_kwargs)

在Django调用视图中间件之前,已经找到了匹配的视图函数并提取了必要的参数, 因此,process_view()方法的后三个参数,分别代表了视图函数、位置参数列表 和关键字参数字典。

和请求中间件一样,视图中间件应当返回None或一个HttpResponse对象。如果 返回的是HttpResponse对象,Django将跳过其他视图中间件和后续视图函数处理 环节:

mw-view

如果有多个视图中间件,那么将按照它们在配置对象的MIDDLEWARE_CLASSES属性中 的顺序执行。例如上图中,我们定义了三个视图中间件A、B和C。那么,当一个请求 进来时,Django将先执行A,如果A返回None,那么继续执行B,如果B也返回None, 那么继续执行C。

修改示例中的视图中间件A,当用户请求/report/123/时,返回404响应。