Django中间件是一种在请求和响应处理过程中介入的机制,允许你在视图处理请求之前或之后执行自定义代码。中间件适用于处理全局性任务,如身份验证、日志记录、内容修改等。以下是Django中间件的详细说明和使用方法:
一、中间件的核心概念
-
作用阶段:
• 请求阶段:在路由到视图之前处理请求(如身份验证)。
• 视图阶段:在调用视图前后执行操作(如权限检查)。
• 响应阶段:在返回响应前修改内容(如添加HTTP头)。
• 异常阶段:处理视图或中间件抛出的异常(如统一错误处理)。 -
中间件类方法:
•process_request(request): 在路由到视图前调用。
•process_view(request, view_func, view_args, view_kwargs): 在视图被调用前执行。
•process_response(request, response): 在所有响应返回前处理。
•process_exception(request, exception): 处理视图抛出的异常。
•process_template_response(request, response): 处理模板响应(如修改上下文)。
二、创建自定义中间件
1. 编写中间件类
# myapp/middleware/custom_middleware.py
import logging
from django.http import HttpResponseForbidden
logger = logging.getLogger(__name__)
class SimpleLoggingMiddleware:
"""记录请求日志的中间件"""
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 请求处理前
logger.info(f"Request started: {
request.method} {
request.path}")
response = self.get_response(request) # 继续处理链
# 响应处理后
logger.info(f"Request finished: {
request.method} {
request.path} → {
response.status_code}

最低0.47元/天 解锁文章
568

被折叠的 条评论
为什么被折叠?



