Django 中间件是在请求和响应处理过程中执行的插件。它们允许在处理视图之前或之后进行全局处理,例如身份验证、日志记录、错误处理等。下面是一些常见的 Django 中间件,以及它们的简要描述和示例代码:
简要描述: AuthenticationMiddleware 用于处理用户身份验证。它在请求阶段将当前用户附加到请求对象,并允许您在视图中访问用户信息。
示例代码:
# settings.py
MIDDLEWARE = [
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
# ...
]
# views.py
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
# 只有登录用户才能访问这个视图
# 可以通过request.user访问当前登录的用户对象
# 例如:request.user.username、request.user.email等
# ...
简要描述: CorsMiddleware 用于处理跨域资源共享,允许跨域访问资源。当前端代码(例如 JavaScript )从不同的域或端口请求数据时,需要使用此中间件来处理跨域请求。
示例代码:
# settings.py
MIDDLEWARE = [
# ...
'corsheaders.middleware.CorsMiddleware',
# ...
]
# 安装 django-cors-headers 库并设置允许的来源域
CORS_ALLOWED_ORIGINS = [
"https://example.com",
"http://localhost:3000",
]
# views.py
def my_api_view(request):
# 在此处理响应数据
# ...
简要描述: LoggingMiddleware 用于记录请求和响应的信息,便于调试和监控应用程序行为。
示例代码:
# settings.py
MIDDLEWARE = [
# ...
'django.middleware.common.CommonMiddleware',
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
# 自定义的LoggingMiddleware
'myapp.middleware.LoggingMiddleware',
]
# middleware.py
import logging
class LoggingMiddleware:
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
# 在处理视图前执行的代码
logger = logging.getLogger('django')
logger.info(f"Request Method: {request.method}, Path: {request.path}")
response = self.get_response(request)
# 在处理视图后执行的代码
logger.info(f"Response Status Code: {response.status_code}")
return response
以上是一些常见的 Django 中间件及其简要描述和示例代码。请注意,示例代码中的中间件可能是自定义的或 Django 内置的。您可以根据项目的需求选择使用适合的中间件,或者创建自己的中间件来满足特定的功能和需求。