2

同じmodels.pyとadminバックエンドを共有する2つのサイトがありますが、異なるviews.pyと異なるテンプレートファイルを使用しています。

Djangoに2つのドメイン名のそれぞれに異なるviews.pyファイルを使用させる方法はありますか?ある種のカスタムミドルウェアでrequest.HTTP_HOSTを見ることができますか?

4

3 に答える 3

7

@jdiの答えを少し拡張します。サイトフレームワークはDjangoでこの目的のために作成されていますが、それを利用するには各ドメインに個別にサービスを提供する必要があります。ドメインごとに個別のsettings.pyファイルを作成します。ただし、それぞれに含まれる共通のsettings.pyを引き続き使用できます。例えば:

settings.py

# all common settings here

domain1_settings.py

from settings import *

SITE_ID = 1
ROOT_URLCONF = domain1_urls.py

domain2_settings.py

from settings import *

SITE_ID = 2
ROOT_URLCONF = domain2_urls.py

次に、サーバーの起動時に使用する設定ファイルを手動で指定します。

発達

python manage.py runserver --settings=domain1_settings.py

プロダクション(gunicorn)

python manage.py run_gunicorn --settings=domain1_settings.py

プロダクション(uwsgi)

uwsgi --env DJANGO_SETTINGS_MODULE=myproject.domain1_settings

明らかに、gunicorn/uwsgiの実際の構成にそれを含めたいと思うでしょう。上記は説明のみを目的としています。

于 2012-05-21T19:16:27.100 に答える
3

これがdjangoのサイトフレームワークの目的だと思います:
https ://docs.djangoproject.com/en/1.4/ref/contrib/sites/

サイトを定義し、プロジェクトでこれをチェックする機能があります。

于 2012-05-21T18:51:56.830 に答える
0

@jdi が言及したSitesフレームワークはおそらくあなたが探しているものですが、django.contrib.sites.models.Siteモデルを現在のモデルに統合する必要があるかもしれません。

もう 1 つのオプションは、2 つの異なるサーバー プロセスで 2 つの Django サイトを既に実行している (または計画している) 場合、2 つの異なるsettings.pyファイルを各プロセスに関連付けることを検討することです。各ファイルは、異なるファイルを参照する異なるファイルをsettings.py参照することを除いて、基本的に同じです。urls.pyviews.py

これら 2 つのサイトが今後さらに分岐する場合は、このソリューションの方が適している可能性があります。

于 2012-05-21T19:09:07.213 に答える