おそらく単純な質問と私はちょうど何かが不足していますが、私はアイデアが詰まっています。Djangoクロスサイト逆URL
私はDjangoプロジェクトに、sessions.py
という別個のサイトを提供しており、まったく別のROOT_URLCONF
を持っています。 1つのサイトはユーザー登録、認証、およびプロファイル設定を処理し、他のサイト(別のドメイン上)はファイルマネージャーなどとして機能します。サイトは同じDB、メディア、テンプレートを共有しています。すべてのサイトが同じユーザーベースを共有しており、一種の透過的なシングルサインオン/シングルサインオフメカニズムを実装しています。これは、複数のドメインにまたがる1つの大きなサイトのようなものです。
問題は、テンプレートに多くの{% url %}
タグがあり、他のサイトでテンプレートを使用しても機能しないということです。そして私は可能な限りURLをハードコーディングしないようにしたいと思います。
たとえば、サイトA(a.example.org)に私はAさんのURLconfで
url('^users/$', 'example.accounts.list_users', name='list_users'),
エントリを持っています。それで、global_menu.html
テンプレートでは、私は{% url list_users %}
を持っていて、明らかにそれは完全に動作し、結果として "/users/
"となります。今
、サイトBは(b.example.org)があります、共通のルック・アンド・フィールを持つためにA.と内部の多くを共有し、私はサイトBで同じglobal_menu.html
を使用したいと出力に{% url list_users %}
をしたい」http://a.example.org/users/
"私はこれを達成する最良の方法は何ですか?
現在、サイトごとに別々のglobal_menu.html
を使用していますが、これはDRYの原則に違反しており、あまり便利ではありません。そして、はい、Djangoのcontrib.sites
フレームワークを使用しています。別のSITE_ID
がsettings.py
で定義されていますが、それ以外の場所では実際には使用されていません。
更新:現在、私はオリジナルのものを呼び出すために、url
タグや猿パッチングreverse()
を再実装することを考え、そして例外にいくつかの「外国URIリスト」に追加のルックアップを実行しています。このようなものが既に存在するなら、私は聞いて喜んでいるでしょう。
ありがとうございました!
で実行するurls.pyファイル内のコードを配置。 (2)は素晴らしい機能ですが、指摘してくれてありがとうございますが、存在しない名前のURLにはあまり役に立ちません。私はBのURLconfに 'url( 'http:\/\/a \ .example \ .com/users /'、lambda:None、name = 'list_users')のようなものを追加しようとしましたが、私が期待しているように働いています( "/ http:..."を返します)。 – drdaeman