为什么编写我自己的MiddleWare会崩溃我的Django应用程序?

时间:2012-04-21 22:59:13

标签: django django-middleware

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

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 |。

的最后一行,我的应用程序会加载

1 个答案:

答案 0 :(得分:1)

process_requestprocess_view必须返回NoneHttpResponse个对象(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