同じmodels.pyとadminバックエンドを共有する2つのサイトがありますが、異なるviews.pyと異なるテンプレートファイルを使用しています。
Djangoに2つのドメイン名のそれぞれに異なるviews.pyファイルを使用させる方法はありますか?ある種のカスタムミドルウェアでrequest.HTTP_HOSTを見ることができますか?
同じmodels.pyとadminバックエンドを共有する2つのサイトがありますが、異なるviews.pyと異なるテンプレートファイルを使用しています。
Djangoに2つのドメイン名のそれぞれに異なるviews.pyファイルを使用させる方法はありますか?ある種のカスタムミドルウェアでrequest.HTTP_HOSTを見ることができますか?
@jdiの答えを少し拡張します。サイトフレームワークはDjangoでこの目的のために作成されていますが、それを利用するには各ドメインに個別にサービスを提供する必要があります。ドメインごとに個別のsettings.pyファイルを作成します。ただし、それぞれに含まれる共通のsettings.pyを引き続き使用できます。例えば:
# all common settings here
from settings import *
SITE_ID = 1
ROOT_URLCONF = domain1_urls.py
from settings import *
SITE_ID = 2
ROOT_URLCONF = domain2_urls.py
次に、サーバーの起動時に使用する設定ファイルを手動で指定します。
python manage.py runserver --settings=domain1_settings.py
python manage.py run_gunicorn --settings=domain1_settings.py
uwsgi --env DJANGO_SETTINGS_MODULE=myproject.domain1_settings
明らかに、gunicorn/uwsgiの実際の構成にそれを含めたいと思うでしょう。上記は説明のみを目的としています。
これがdjangoのサイトフレームワークの目的だと思います:
https ://docs.djangoproject.com/en/1.4/ref/contrib/sites/
サイトを定義し、プロジェクトでこれをチェックする機能があります。
@jdi が言及したSites
フレームワークはおそらくあなたが探しているものですが、django.contrib.sites.models.Site
モデルを現在のモデルに統合する必要があるかもしれません。
もう 1 つのオプションは、2 つの異なるサーバー プロセスで 2 つの Django サイトを既に実行している (または計画している) 場合、2 つの異なるsettings.py
ファイルを各プロセスに関連付けることを検討することです。各ファイルは、異なるファイルを参照する異なるファイルをsettings.py
参照することを除いて、基本的に同じです。urls.py
views.py
これら 2 つのサイトが今後さらに分岐する場合は、このソリューションの方が適している可能性があります。