2012-04-21 10 views
0

私のアプリのビューがロードされる前に関数を実行したいので、自分のミドルウェアを書きました。それは、今のフォルダ「my_app_name」と、にある「DoBeforeMiddleWare.py」と呼ばれるファイルである私はsettings.pyにミドルウェアの私のリストにこの機能を配置してみてください 自分のミドルウェアを作成すると、私のDjangoアプリケーションがクラッシュするのはなぜですか?

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

次のようになります。

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_requestおよびprocess_viewは、NoneまたはHttpResponseオブジェクト(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

+0

あなたのクラスの別の問題を含めるために私の答えを改訂 – cberner

+0

ありがとう、私の質問(上記)を更新しましたが、私はまだアプリが停止していると思います。 – dangerChihuahua007

関連する問題