Django 中间件的作用是什么?

2023-04-11 00:00:00 django 中间件 作用

Django 中的中间件是一种机制,它允许在 HTTP 请求到达视图之前或之后执行一些预处理或后处理操作。中间件在 Django 框架中扮演着非常重要的角色,可以用于各种用途,比如鉴权、缓存、日志记录等。

中间件的工作原理是将请求传递给一个中间件类,然后让这个类处理请求或响应,最后将请求或响应传递给下一个中间件类,直到最终返回响应。中间件类需要实现 __init____call__ 两个方法,其中 __init__ 方法会在 Django 启动时被调用,用于初始化中间件类的配置参数;__call__ 方法会在每次请求时被调用,用于处理请求或响应。

以下是一个简单的中间件类的示例,它会在响应头中添加一个自定义的 Server 字段:

class CustomServerNameMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        response['Server'] = 'pidancode.com'
        return response

使用中间件需要在 Django 项目的 settings.py 文件中进行配置。在 MIDDLEWARE 列表中添加中间件的路径即可,例如:

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'myapp.middleware.CustomServerNameMiddleware',  # 添加的中间件
]

在上面的配置中,myapp.middleware.CustomServerNameMiddleware 是我们自己编写的中间件类的路径。

当我们访问 Django 项目中的某个页面时,中间件会顺序执行,直到响应被返回为止。在本例中,CustomServerNameMiddleware 中间件会在响应头中添加一个 Server 字段,最终返回响应。

相关文章