Djangoのミドルウェアでアドレスを変更します。
-
12-09-2019 - |
質問
私はそれが可能かどうかわからないが、私はミドルウェアを使用したURLの最後にいくつかのパラメータを追加したいと思います。それは要求されたURLをmodyfing後にリダイレクトせずに行うことができますか?
すなわち。 ユーザーがクリック:... / some_link ?... / some_link PAR1 = 1&PAR2 = 2
:およびミドルウェアは、それを書き換えて他の方法は、REPONSEを変更し、すべてのHTMLリンクを交換することですが、それは私がやってみたいものではないのです。
おかげ
解決
私は、これは本当にあなたの問題と正確に何をやろうとしているに依存だと思います。
あなたはリロードせずにページのURLを変更することはできませんとしてあなたは、ユーザーをリダイレクトすることなく、URLを変更することはできません。基本的にリダイレクトが上を移動するようにユーザーに伝える応答であり、実際にURLを変更する方法はありません。あなたがJavaScriptのようなものでそれを行う場合でも、それは、クライアントまたはサーバ側で行うことはできませんので、あなたは基本的に、リダイレクトと同じことを行うことに注意します。
私はあなたのURLを経由してこの情報を渡す必要がありますなぜあなたは私たちに説明している場合、それが役立つかもしれないと思います。なぜセッションにデータを格納しませんか?
私は、あなたがリクエストオブジェクトにデータを追加することができますが、それがURLに追加されませんと思います。
他のヒント
class YourRedirectMiddleware:
def process_request(self, request):
redirect_url = request.path+'?par1=1&par2=2'
return HttpResponsePermanentRedirect(redirect_url)
あなたが達成しようとするものであり、なぜこの方法は?
あなたはミドルウェアで好きなものは何でもすることができます。あなたがURLを取得し、あなたがしたい場合は、新しいものにリダイレクトすることができ、リクエストオブジェクトへのアクセスを持っています。
私の質問は次のようになり、なぜあなたはこれをしたいですか?あなたが要求に関する情報を保持する必要がある場合、これを実行するための適切な場所でのセッションである。