Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 来自中间件的Django装饰器,每个视图函数具有不同的参数_Python_Django_Python Decorators_Django Middleware - Fatal编程技术网

Python 来自中间件的Django装饰器,每个视图函数具有不同的参数

Python 来自中间件的Django装饰器,每个视图函数具有不同的参数,python,django,python-decorators,django-middleware,Python,Django,Python Decorators,Django Middleware,我的Django项目中有一个SSO中间件,我需要向它传递一个参数 在我的views.py文件中,我有不同的视图函数,这些函数都使用decorator\u从带有参数的\u中间件\u进行修饰,但具有不同的参数: sso_decorator = decorator_from_middleware_with_args(SSOMiddleware) @sso_decorator(True): def index(): ... @sso_decorator(False): def view():

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

在我的
views.py
文件中,我有不同的视图函数,这些函数都使用
decorator\u从带有参数的\u中间件\u进行修饰,但具有不同的参数:

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函数要执行两次?
为什么它有不同的参数?

如果访问视图
视图
,是否会得到
一些参数:False
两次?您的
sso中间件
很可能位于settings.py中,因此每次发出请求时都会执行它。这是第一个输出。第二个输出应该来自通过url访问的特定视图
index
。这是我的假设。我发现中间件有点棘手,也有我的问题。中间件设置中是否也引用了该中间件?是和是@DanielRoseman似乎就是这样,一旦我将它从settings.py中删除,它只打印一次。刚刚意识到我不需要它,在设置中的中间件。