3

可能かどうかはわかりませんが、ミドルウェアを使用して URL の末尾にいくつかのパラメーターを追加したいと考えています。要求された URL を変更した後、リダイレクトせずに実行できますか?

すなわち。ユーザーがクリック: .../some_link すると、ミドルウェアがそれを次のように書き換えます: .../some_link?par1=1&par2=2

他の方法は、応答を変更してすべての HTML リンクを置き換えることですが、それは私がやりたいことではありません。

ありがとう

4

3 に答える 3

4
class YourRedirectMiddleware:

    def process_request(self, request):
        redirect_url = request.path+'?par1=1&par2=2'
        return HttpResponsePermanentRedirect(redirect_url)

あなたは何を達成しようとしているのか、なぜこのようにするのですか?

于 2009-09-22T09:03:49.343 に答える
1

これは、あなたの問題と、あなたが何をしようとしているのかに大きく依存すると思います。

ページの URL はリロードしないと変更できないため、ユーザーをリダイレクトせずに URL を変更することはできません。基本的に、リダイレクトはユーザーに先に進むように伝える応答であり、実際に URL を変更する方法はありません。JavaScript などで行っても、基本的にはリダイレクトと同じことを行うため、クライアント側やサーバー側では実行できないことに注意してください。

この情報を URL 経由で渡す必要がある理由を説明していただけると助かります。セッションにデータを保存しないのはなぜですか?

リクエスト オブジェクトにデータを追加できると思いますが、それは URL に追加されません。

于 2009-09-22T14:06:31.420 に答える
0

ミドルウェアで好きなことをすることができます。リクエスト オブジェクトにアクセスできます。URL を取得して、必要に応じて新しい URL にリダイレクトできます。

私の質問は、なぜこれをやりたいのですか?リクエストに関する情報を保持する必要がある場合、これを行う適切な場所はセッション内です。

于 2009-09-22T09:06:21.350 に答える