21

サイト全体で作成したミドルウェアを使用したい(ページ数が多いため、すべてのページにコードを使用したかったので、デコレータを使用しないことにしました)。唯一の問題は、管理コードにミドルウェアを使用したくないということです。ミドルウェアはアクティブになっているようです。

おそらくsettings.pyまたはurls.pyを構成する方法はありますか、それとも管理システムのページで実行されないようにするためのコード内の何かがありますか?

どんな助けでも大歓迎です、

乾杯

ポール

4

4 に答える 4

36

一般的な方法は(piquadratの回答に基づく)

def process_request(self, request):
    if request.path.startswith(reverse('admin:index')):
        return None
    # rest of method

このように、誰かがあなたに変わっ/admin//django_admin/場合でも、カバーされます。

于 2010-07-08T14:04:44.967 に答える
9

process_request (およびミドルウェアのその他の process_* メソッド) でパスを確認できます。

def process_request(self, request):
    if request.path.startswith('/admin/'):
        return None
    # rest of method

def process_response(self, request, response):
    if request.path.startswith('/admin/'):
        return response
    # rest of method
于 2009-06-22T17:04:37.543 に答える