2016-05-20 8 views
1

クライアントを私のdjangoアプリケーションの別のエンドポイントにリダイレクトする必要があります。私はこれを行うにはrequest.build_absolute_uri()と相対URLを使用することができます知っていますが、URL階層内の独自の場所を知るためにリダイレクトハンドラを必要としない汎用ソリューションを探しています。URL階層に私のdjangoアプリケーションがどこにマウントされているかを知ることができますか?

は一例として、私は次の2つのURLでハンドラを持っている: https://example.com/some/other/namespace/MY_APP/baz/destination_endpoint

私は両方のことにendpoint_oneendpoint_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_oneendpoint_twoのハンドラがURL階層の相対位置を知っている必要がありました。これは避けようとしています。

+1

なぜ相対URLを使用しないのですか?このようなケースはまさに彼らが発明された理由です。私はそれがWebサーバーの設定であるため、マップされているURLをアプリ内から把握することはできないと思います。あなたはファイルのパスしか取得できませんが、一般的な場合はurlとは関係ありません。 – serg

+0

の相対URLは可能な解決策ですが、ハンドラが独自のURLを知る必要がないようなものが必要です。だから、エンドポイントは 'MY_APP/foo/my_endpoint'にマウントされているかもしれませんが、' MY_APP/my_endpoint'にマウントされているのとまったく同じリダイレクトロジックを使用できるようにしたいと思います。それがどこにあるのか知るためには、どこに行く必要があるのですか –

+0

@serg私は、私がやろうとしていることをもう少し明確にするために質問を書き直すつもりです。あなたが正しい;質問が書かれているので、それは相対URLで解決するのが簡単ではありません。 –

答えて

0

もっと研究して同僚と話した後、私はreverseが私に必要なものを正確に実行することに気付きました。

関連する問題