Django標準のDjango sites
フレームワークを使用して、わずかに異なるコンテンツを持つ複数のサイトに配信するDjangoアプリを考えてみましょう。 S:これをホストするDjangoはHTTP要求の "Host"ヘッダに基づいてどのSiteオブジェクトを使用するかを決めます。
伝統的な方法は、それぞれのsettings.py
で異なるSITE_ID
を指し、各プロジェクトで複数のDjangoのプロジェクトで複数のSite
オブジェクトと設定アプリを設定することです。
さまざまな理由から、新しいサイトごとに新しいプロジェクトを作成する必要はありません。私は1つのプロジェクトをセットアップし、Djangoが着信HTTPリクエストで参照されるホスト名に基づいてどのSite
オブジェクトを使用するかを把握したいと考えています。
この機能を実現するには、どのような方法が推奨されますか?
明確化:私は(settings.py
にハードコーディングされている)settings.SITE_ID
を無視し、代わりに動的にHost
ヘッダにあるものに基づいてサイトのオブジェクトをフェッチするために、サイトのフレームワークをしたいです。なぜこの要件? 1時間に何度もサイトを追加したり削除したりします。サイトの総量は10,000を超えますので、各サイトにDjangoプロジェクトを設定することはオプションではありません。これはDjangoで解決可能な問題ですか?もしそうなら、それを達成する最良の方法は何ですか?
実行時に設定(SITE_ID)を変更したくないことに注意してください。サイトモジュールをホスト名ヘッダーに基づいて動的に動作させることが欲しいだけです。これは、要求のホスト名ヘッダーにあるものに基づいて、Siteオブジェクトを動的に選択します。それを達成するための正しい方法ではないことを暗示していますか? – knorv
'Host'ヘッダは要求があるまで来ません。これは定義上、実行時に発生します。 –
それは明らかです。私は、サイトフレームワークがsettings.SITE_ID(これは明らかにハードコードされています)を無視し、代わりに "Host"ヘッダーにあるものに基づいてSiteオブジェクトを動的に取得することを意味します。毎時サイトを追加したり削除したりするので、私はDjangoプロジェクトを各サイトに設定したくありません。これはDjangoで解決可能な問題ですか?もしそうなら、それを達成する最良の方法は何ですか? – knorv