2012-04-21 74 views
0

我想在我的應用程序的任何視圖加載之前運行一個函數,所以我編寫了自己的中間件。它是在一個名爲「DoBeforeMiddleWare.py」所在的文件夾「my_app_name」和,現在的文件,看起來像爲什麼編寫自己的MiddleWare會使我的Django應用程序崩潰?

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

process_requestprocess_view必須返回NoneHttpResponse對象(reference)。如果你想要一個無操作中間件,你應該改變他們返回None,如下所示:

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

嗯,感謝,但改變'類DoBeforeMiddleWare(要求):'來'類DoBeforeMiddleWare(對象):'仍然是拖延我的申請。 – dangerChihuahua007 2012-04-21 23:52:48

+0

修改了我的答案,以包含您的班級的另一個問題 – cberner 2012-04-22 00:00:31

+0

謝謝,我更新了我的問題(上圖),但我認爲該應用程序仍在拖延。 – dangerChihuahua007 2012-04-22 00:06:04

相關問題