可能かどうかはわかりませんが、ミドルウェアを使用して URL の末尾にいくつかのパラメーターを追加したいと考えています。要求された URL を変更した後、リダイレクトせずに実行できますか?
すなわち。ユーザーがクリック: .../some_link すると、ミドルウェアがそれを次のように書き換えます: .../some_link?par1=1&par2=2
他の方法は、応答を変更してすべての HTML リンクを置き換えることですが、それは私がやりたいことではありません。
ありがとう
可能かどうかはわかりませんが、ミドルウェアを使用して URL の末尾にいくつかのパラメーターを追加したいと考えています。要求された URL を変更した後、リダイレクトせずに実行できますか?
すなわち。ユーザーがクリック: .../some_link すると、ミドルウェアがそれを次のように書き換えます: .../some_link?par1=1&par2=2
他の方法は、応答を変更してすべての HTML リンクを置き換えることですが、それは私がやりたいことではありません。
ありがとう
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
あなたは何を達成しようとしているのか、なぜこのようにするのですか?
これは、あなたの問題と、あなたが何をしようとしているのかに大きく依存すると思います。
ページの URL はリロードしないと変更できないため、ユーザーをリダイレクトせずに URL を変更することはできません。基本的に、リダイレクトはユーザーに先に進むように伝える応答であり、実際に URL を変更する方法はありません。JavaScript などで行っても、基本的にはリダイレクトと同じことを行うため、クライアント側やサーバー側では実行できないことに注意してください。
この情報を URL 経由で渡す必要がある理由を説明していただけると助かります。セッションにデータを保存しないのはなぜですか?
リクエスト オブジェクトにデータを追加できると思いますが、それは URL に追加されません。
ミドルウェアで好きなことをすることができます。リクエスト オブジェクトにアクセスできます。URL を取得して、必要に応じて新しい URL にリダイレクトできます。
私の質問は、なぜこれをやりたいのですか?リクエストに関する情報を保持する必要がある場合、これを行う適切な場所はセッション内です。