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)を返す必要があります。no-op ミドルウェアが必要な場合は、次のように None を返すように変更する必要があります。NoneHttpResponse

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 に答える