首页 > 解决方案 > Django 1.11 新的中间件和 decorator_from_middleware_with_args

问题描述

我一直在寻找向中间件类发送参数(名称),但文档真的很矛盾

当我尝试向init添加 *args、**kwargs 或命名参数时,我收到以下消息:TypeError: init () got an unexpected keyword argument

前往手册,它说:

Django 仅使用 get_response 参数初始化您的中间件,因此您不能将init () 定义为需要任何其他参数。

然后我找到了一个名为 decorator_from_middleware_with_args 的方法,文档说

decorator_from_middleware_with_args(middleware_class)[source]¶ 类似于 decorator_from_middleware,但返回一个函数,该函数接受要传递给 middleware_class 的参数。例如,cache_page() 装饰器是从 CacheMiddleware 创建的,如下所示:

cache_page = decorator_from_middleware_with_args(CacheMiddleware)

@cache_page(3600)
def my_view(request):
    pass

但是,如果中间件的 init 不能接受参数,这怎么可能呢?

有人知道如何在 Django 1.11 中使用它吗?

标签: pythondjango

解决方案


推荐阅读