3

私は、単一の 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 倍のメモリが必要になります。

私が達成する必要があるもののためのより良い実装はありますか?

4

1 に答える 1

-1

私の知る限り、settings.py はすべての django プロジェクトで一意であり、SITE_ID はこのレベルで定義されています。私見の最善のアプローチは、データベースルーターで多くのdjangoプロジェクトを使用することです。各プロジェクトで、django サイト フレームワークで使用する SITE_ID を定義できます。 https://docs.djangoproject.com/en/dev/topics/db/multi-db/#database-routers

于 2012-10-16T20:12:41.560 に答える