如何编写 Django 中间件?

2023-04-11 00:00:00 django 中间件 编写

在 Django 中间件中,主要通过定义一个中间件类来实现。一个中间件类需要实现 __init____call__ 两个方法。

__init__ 方法在中间件实例化时被调用,通常用于初始化中间件所需的参数。

__call__ 方法在每个请求被处理时被调用,通常用于对请求、响应进行一些处理,或者继续调用后续中间件/视图函数。该方法需要接收一个 request 参数,并返回一个 HttpResponse 对象。

以下是一个简单的中间件示例,它将所有响应头中的 Server 字段替换为 pidancode.com

class CustomServerMiddleware:
    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

中间件类接收一个 get_response 参数,该参数用于调用后续中间件或者视图函数。在 __call__ 方法中,先调用 get_response 获取响应对象,然后修改响应头中的 Server 字段后返回。

为了在 Django 中使用该中间件,需要将其添加到 MIDDLEWARE 配置中:

MIDDLEWARE = [
    # ...
    'path.to.CustomServerMiddleware',
    # ...
]

通过以上操作,该中间件就会被添加到中间件链中,在每个响应中都会将 Server 字段替换为 pidancode.com

相关文章