Django: 路由与视图 互动版

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

请求中间件

请求中间件在Django为请求匹配路由之前执行。

一个请求中间件应当实现方法process_request(),其原型如下:

process_request(request)

参数request是一个HttpRequest对象。

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

mw-request

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

修改示例代码中的请求中间件C:

1. 为HttpRequest对象增加一个属性myflag,并设置其值为字符串HAHAHA

2. 将其设置为第一个执行的请求中间件

3. 在中间件B中打印输出请求对象的myflag