内置中间件
Django 提供了一些内置中间件,你可以在 MIDDLEWARE 设置中启用或禁用它们。一些常见的内置中间件包括:
- django.middleware.security.SecurityMiddleware: 提供一些安全相关的 HTTP 头,例如防止点击劫持(clickjacking)等。
- django.middleware.common.CommonMiddleware: 处理 URL 后缀、斜杠等,提供了一些便捷的功能。
- django.contrib.sessions.middleware.SessionMiddleware: 处理会话(session)的中间件,使得你可以在请求和响应中访问会话数据。
- django.contrib.auth.middleware.AuthenticationMiddleware: 处理用户身份认证的中间件,使得你可以在视图中访问当前用户。
- django.middleware.csrf.CsrfViewMiddleware: 提供 CSRF 保护,确保请求中包含有效的 CSRF 令牌。
- django.middleware.clickjacking.XFrameOptionsMiddleware: 提供点击劫持保护,设置 X-Frame-Options 头。
编写自定义中间件
你还可以编写自己的中间件以满足项目特定的需求。一个自定义中间件是一个类,它定义了 process_request、process_view、process_template_response 等方法,你可以在这些方法中编写额外的逻辑。
以下是一个简单的自定义中间件示例,它在请求到达视图之前打印请求的路径:
# myapp/middleware.py
class PrintPathMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
print(f"Request path: {request.path}")
response = self.get_response(request)
return response
要使用这个中间件,将其添加到 MIDDLEWARE 设置中:
# settings.py
MIDDLEWARE = [
# 其他中间件...
'myapp.middleware.PrintPathMiddleware',
# 其他中间件...
]
这个中间件将在每个请求到达视图之前打印请求的路径。
中间件的执行顺序是按照它们在 MIDDLEWARE 设置中的顺序执行的。你可以根据需要调整中间件的顺序。
确保查阅 Django 4.0 的官方文档,以获取有关内置中间件和编写自定义中间件的更详细信息。
转载请注明出处:http://www.pingtaimeng.com/article/detail/7220/Django