1

以前の URL のスタックを作成して、後続のページからナビゲートできるようにするカスタム ミドルウェアがいくつかあります。

URL をスタックに追加するビューの 1 つには、応答を別のページにリダイレクトできるロジックがいくつかあります。

@middleware_decorator # tells the middleware to add this views url to the stack when it is called
def some_view(request):
    ... stuff ...

    if some_condition:
        return HttpResponseRedirect(url, kwargs)

私が抱えている問題は、応答リダイレクト条件にヒットした場合、現在の URL をスタックに追加したくないということです。次のページから戻ると、同じ条件に再びヒットしてリダイレクトされるためです。彼らが残したばかりのページ。ミドルウェアに「削除」機能がありますが、次のように呼び出すことはできません。

if some_condition:
    Middleware.remove("this views url")
    return HttpResponseRedirect(url, kwargs)

ビューの URL は、論理的な理由からミドルウェアの process_response ステージに追加されるため、リダイレクトが行われた後に発生します。最初のビューがリダイレクトされた後、ミドルウェアで検出する方法があることを望んでいました-「リダイレクトが発生しました」と、ミドルウェアでそれを追加するかどうかを決定できます。

4

1 に答える 1