11

Djangoには、単一のDjangoインストールから複数のWebサイトホスティングをサポートする サイトフレームワークがあります。

編集(以下はシステムの誤った仮定です)


ミドルウェアがリクエストドメインのルックアップ/キャッシュに基づいてsettings.SITE_ID値を設定することを理解しています。


ENDEDIT

しかし、ローカルでテストするとき、私はhttp://my-actual-domain.com/ではなくhttp://127.0.0.1:8000/にいます。

開発中にさまざまなサイトをローカルで表示するにはどうすればよいですか?

4

3 に答える 3

19

適切な設定を含む、サイトごとに個別の settings.py ファイルを作成しますSITE_ID。もちろん、importステートメントを使用して、ファイル間で共通の設定を共有できます。

これからは、Django 開発サーバーを実行するときに、実行--settingsするサイトを Django に指示するオプションを指定します。

例 (settings_first.py と settings_second.py の 2 つの設定ファイルがあると仮定します):

manage.py runserver --settings settings_first

最初のサイトを運営し、

manage.py runserver --settings settings_second

2 番目のサイトにアクセスできます。

異なるポートを指定して、同時に実行することもできます。

manage.py runserver 8001 --settings settings_first

manage.py runserver 8002 --settings settings_second

上記のコマンド (2 つの異なるコンソールで実行) により、最初の Web サイトはhttp://127.0.0.1:8001/でアクセス可能になり、2 番目のWeb サイトはhttp://127.0.0.1:8002/でアクセス可能になります。

于 2010-02-08T19:55:07.583 に答える
4

多分あなたはドキュメンテーションによって誤解されています。あなたが書いた:

ミドルウェアがリクエスト ドメインのルックアップ/キャッシュに基づいて settings.SITE_ID 値を設定することを理解しています。

これはそうではありません。それはまったく逆に機能します。Django は settings.SITE_ID 値を使用して、データベース内の正しい Site オブジェクトを検索します。これにより、優先ドメインとサイト名が返されます。

このsitesアプリケーションは、(私の意見では) バックグラウンドで同じデータベースを使用して複数のサイトを持ちたいというまれなユースケースを満たすように設計されています。これにより、同じ記事を異なるサイトで公開できますが、一部のモデルを 1 つのサイトでのみ利用できるという柔軟性もあります。

複数のプロジェクト (実際にはサイト フレームワークを使用しないプロジェクト) を開発する場合、特別なことを指定する必要はありません。SITE_IDに設定されているデフォルトを使用できます1。ウェブサイトのリンクに関する管理者のビューを利用するには、開発データベースでSiteのドメインを に設定できますlocalhost:8000

同じデータベースを使用して複数のサイトを開発する (およびサイト フレームワークを利用する) 場合は、各プロジェクトに異なるSITE_IDが同じデータベース設定を使用する必要があります。開発マシンの各プロジェクトの値SITE_IDは、ほとんどの場合、運用サーバーの値と同じです。

于 2010-02-08T23:00:55.620 に答える
-1

参考までに - この問題を解決する機能を備えた django-dynamicsites を本日リリースしました - https://bitbucket.org/uysrc/django-dynamicsites/src

于 2011-03-24T16:35:48.540 に答える