在 Django 中,中间件(Middleware)是一个轻量级的、底层的“插件”系统,用于在全局范围内修改 Django 的输入或输出。中间件可以用于处理用户请求(在视图被调用之前)和响应(在响应返回给用户之前)。
中间件类定义在 settings.py
文件的 MIDDLEWARE
列表中。当 Django 加载时,它会按照 MIDDLEWARE
中的顺序来实例化这些中间件,并在每个请求/响应周期中调用它们。
下面是一个简单的中间件示例,用于打印每个请求的路径:
- 创建一个中间件类:
在你的 Django 项目中创建一个新的 Python 文件(例如,my_middleware.py
),并在其中定义一个中间件类:
from django.utils.deprecation import MiddlewareMixin
class SimpleMiddleware(MiddlewareMixin):
def process_request(self, request):
# 在视图被调用之前调用
print(f"Processing request for {request.path}")
def process_response(self, request, response):
# 在视图被调用之后,但在响应返回给用户之前调用
# 可以修改 response 对象
print(f"Processing response for {request.path}")
return response
注意:从 Django 1.10 开始,推荐使用 MiddlewareMixin
,但如果你使用的是 Django 1.10 之前的版本,可以省略它。
- 在
settings.py
中添加中间件:
打开你的项目的 settings.py
文件,找到 MIDDLEWARE
列表,并将你的中间件类添加到其中。确保它在 django.middleware.common.CommonMiddleware
之前或之后(根据你的需求),因为中间件是按照列表中的顺序来执行的。
MIDDLEWARE = [
# ...
'your_app_name.my_middleware.SimpleMiddleware',
# ...
'django.middleware.common.CommonMiddleware',
# ...
]
请确保将 'your_app_name.my_middleware.SimpleMiddleware'
替换为你的中间件类的实际路径。
现在,当你运行你的 Django 应用并发送请求时,你应该会在控制台上看到每个请求和响应的处理日志。
Django 提供了许多内置的中间件,例如 AuthenticationMiddleware
(用于身份验证)、SessionMiddleware
(用于会话管理)和 CsrfViewMiddleware
(用于防止跨站请求伪造)。你还可以创建自己的中间件来执行特定的任务,如记录日志、限制访问、进行身份验证或检查用户权限等。