(これは、 「複数のサイトの要求に基づいて Django 設定変数を動的に変更する」の複製ではありません。前の質問では、実行時にはるかに深刻な再構成を行うことがカバーされているためです)
プロジェクトのドメイン/ホストにコンテンツを結び付けるために使用sites.Site
します(外部キーを介して)。適切なSite
ベースの選択request.META['HTTP_HOST']
は、カスタム ミドルウェアで行われます。
ただし、そのようなsites
フレームワークの使用は正確には正規の方法ではないことを認識しています(異なるドメインに異なるデータを提供するアプリケーションのインスタンスが1つsites
ありますが、 AFAIKは、ドメインごとに1つずつ、複数のインスタンスで動作するように設計されています)。
最も気になる要素は、アプリケーションの現在のインスタンスを1つ(ドメイン)settings.SITE_ID
に結び付ける静的設定です。Site
これはいくつかの場所で使用さcontrib.auth
れます (パスワード リセット メールで完全な絶対 URL を作成するため)。したがって、にSITE_ID
基づいて動的に変更するのはクールですrequest.META['HTTP_HOST']
。
だから私の質問は:
SITE_ID を動的に (つまり、ミドルウェアで) 変更することは良い考えですか?
ドキュメントには、実行時に設定を変更することは一般的に悪い考えであると記載されていますが ( here )、おそらくこの場合 (十分に早い段階で呼び出されるミドルウェアで) 行うことは問題ありません。
(編集):
ローカルでは期待どおりに動作します (Django テスト クライアント) が、複数のスレッドやプロセスを持つ運用環境での同時要求を検討しています。