0

我想在我的应用程序中的任何视图加载之前运行一个函数,所以我编写了自己的中间件。它位于文件夹“my_app_name”中一个名为“DoBeforeMiddleWare.py”的文件中,现在看起来像

class DoBeforeMiddleWare:
    def process_request(self, request):
        return None
    def process_view(self, request, view_func, view_args, view_kwargs):
        return None

我尝试将此函数放在 settings.py 中的中间件列表中:

MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'my_project_name.my_app_name.DoBeforeMiddleWare',
)

但是,我重新启动乘客后,我的应用程序永远不会加载。为什么?如果我注释掉 |MIDDLEWARE_CLASSES| 的最后一行,我的应用程序就会加载。

4

1 回答 1

1

process_request并且process_view必须返回None一个HttpResponse对象(reference)。如果你想要一个 no-op 中间件,你应该将它们更改为返回 None,如下所示:

class DoBeforeMiddleWare:
    def process_request(self, request):
        return None
    def process_view(self, request, view_func, view_args, view_kwargs)
        return None
于 2012-04-21T23:45:18.290 回答