クライアントを私のdjangoアプリケーションの別のエンドポイントにリダイレクトする必要があります。私はこれを行うにはrequest.build_absolute_uri()
と相対URLを使用することができます知っていますが、URL階層内の独自の場所を知るためにリダイレクトハンドラを必要としない汎用ソリューションを探しています。URL階層に私のdjangoアプリケーションがどこにマウントされているかを知ることができますか?
は一例として、私は次の2つのURLでハンドラを持っている: https://example.com/some/other/namespace/MY_APP/baz/destination_endpoint
私は両方のことにendpoint_one
とendpoint_two
のために希望: https://example.com/some/other/namespace/MY_APP/endpoint_one
https://example.com/some/other/namespace/MY_APP/foo/bar/endpoint_two
両方のハンドラは、このURLにリダイレクトする必要がありますまったく同じロジックを使用してdestination_endpoint
にリダイレクトすることができます。
私のアプリは、URLの一部である/some/other/namespaces/
について知りません。また、その部分はデプロイメントによって変更される可能性があります(開発環境には存在しない可能性があります)。
私は、各エンドポイントから異なる相対URLを使用して、リンク先URLにリダイレクトできることを知っています。しかし、そのためには、endpoint_one
とendpoint_two
のハンドラがURL階層の相対位置を知っている必要がありました。これは避けようとしています。
なぜ相対URLを使用しないのですか?このようなケースはまさに彼らが発明された理由です。私はそれがWebサーバーの設定であるため、マップされているURLをアプリ内から把握することはできないと思います。あなたはファイルのパスしか取得できませんが、一般的な場合はurlとは関係ありません。 – serg
の相対URLは可能な解決策ですが、ハンドラが独自のURLを知る必要がないようなものが必要です。だから、エンドポイントは 'MY_APP/foo/my_endpoint'にマウントされているかもしれませんが、' MY_APP/my_endpoint'にマウントされているのとまったく同じリダイレクトロジックを使用できるようにしたいと思います。それがどこにあるのか知るためには、どこに行く必要があるのですか –
@serg私は、私がやろうとしていることをもう少し明確にするために質問を書き直すつもりです。あなたが正しい;質問が書かれているので、それは相対URLで解決するのが簡単ではありません。 –