来自中间件的Django装饰器,每个视图功能具有不同的args

时间:2014-09-19 13:36:46

标签: python django python-decorators django-middleware

我的Django项目中有一个SSO中间件,我需要传递一个参数。

在我的views.py文件中,我有不同的视图函数,这些函数都被decorator_from_middleware_with_args修饰但有不同的参数:

sso_decorator = decorator_from_middleware_with_args(SSOMiddleware)

@sso_decorator(True):
def index():
    ...

@sso_decorator(False):
def view():
    ...

这是我的中间件类:

class SSOMiddleware:

    def __init__(self, some_arg=False):
        self.some_arg = some_arg

    def process_request(self, request):
        print self.some_arg

当我通过url访问索引视图时,我在控制台中获得的输出是:

Some argument: False
Some argument: True

我在这里有两个问题:

为什么process_request函数执行了两次? 为什么它有不同的论点?

0 个答案:

没有答案