Django 中如何使用中间件 (Middleware)?

· 约 4 分钟读完 · 第 117 / 160 章

推荐答案

在 Django 中使用中间件 (Middleware) 的步骤如下:

  1. 创建中间件类:编写一个 Python 类,并实现 __init__ 和 __call__ 方法,或者根据需要实现 process_request、process_view、process_response、process_exception 和 process_template_response 方法。

  2. 注册中间件:将中间件类添加到 settings.py 文件中的 MIDDLEWARE 列表中。

  3. 使用中间件:中间件会在每个请求和响应过程中自动调用,无需手动干预。

本题详细解读

中间件的作用

中间件是 Django 处理请求和响应的钩子框架。它是一个轻量级的、低级别的插件系统,用于全局改变 Django 的输入或输出。每个中间件组件负责处理请求和响应的某些特定方面。

中间件的执行顺序

中间件的执行顺序与 MIDDLEWARE 列表中的顺序一致。请求阶段,中间件从上到下执行;响应阶段,中间件从下到上执行。

中间件的方法

  • __init__(self, get_response):初始化中间件,get_response 是一个可调用对象,用于获取视图的响应。
  • __call__(self, request):处理请求和响应,通常在这里编写自定义逻辑。
  • process_request(self, request):在请求到达视图之前执行。
  • process_view(self, request, view_func, view_args, view_kwargs):在调用视图之前执行。
  • process_response(self, request, response):在视图处理完请求后执行。
  • process_exception(self, request, exception):在视图抛出异常时执行。
  • process_template_response(self, request, response):在视图返回 TemplateResponse 时执行。

示例

以下是一个简单的中间件示例,它在每个请求中添加一个自定义的 HTTP 头:

在 settings.py 中注册该中间件:

这样,每个响应都会包含 X-Custom-Header: Hello, Middleware! 的 HTTP 头。