私は、単一の Django フレームワークの下で複数のサイトを持つためのさまざまな (そして多くの) 方法を研究してきました。
私のユースケースに適したソリューションはまだありません。ユースケースは次のとおりです。
- データの大部分 (95% 以上) が 2 つのアプリ間で共有されるため、単一のデータベース
- それぞれが異なるドメインを介してログインし、実際には同じ生データを異なる方法で操作する 2 つの異なるユーザー タイプ
私が達成したいのはこれです:
訪問者が example.com にアクセスすると、SITE_ID = 1 の設定が有効になります。
訪問者が training.example.com にアクセスすると、SITE_ID = 2 の設定が有効になります。
私はこれをしたいので:
- ユーザーごとに明示的に異なる UserProfile オブジェクトを使用したい
- 異なるドメイン間でビューとアプリを自由に組み合わせたい
サイト フレームワークに関する Django のドキュメントは役に立たないようです。
私の現在の考えは、wsgi サーバー (私の場合は uWSGI) を使用して実際に解決することです。ここでは、Django のデフォルトの wsgi.py を複製して、各 wsgi conf に独自の Django settings.py を設定します。
その場合、サーバーは実際には 2 つの異なる wsgi アプリを提供しますが、それらはほとんど同じコードを使用します。
したがって、このシナリオでは、私の Django プロジェクトには次のものがあります。
- example.com.settings.py (SITE_ID = 1)
- training.example.com.settings.py (SITE_ID = 2)
- example.com.wsgi.py (example.com.settings.py を使用)
- training.example.com.wsgi.py (training.example.com.settings.py を使用)
ここでの私のシナリオは機能するはずですが、同じ Django インスタンス内でこれを解決するのに 2 倍のメモリが必要になります。
私が達成する必要があるもののためのより良い実装はありますか?