以前の 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 ステージに追加されるため、リダイレクトが行われた後に発生します。最初のビューがリダイレクトされた後、ミドルウェアで検出する方法があることを望んでいました-「リダイレクトが発生しました」と、ミドルウェアでそれを追加するかどうかを決定できます。