多分あなたはドキュメンテーションによって誤解されています。あなたが書いた:
ミドルウェアがリクエスト ドメインのルックアップ/キャッシュに基づいて settings.SITE_ID 値を設定することを理解しています。
これはそうではありません。それはまったく逆に機能します。Django は settings.SITE_ID 値を使用して、データベース内の正しい Site オブジェクトを検索します。これにより、優先ドメインとサイト名が返されます。
このsites
アプリケーションは、(私の意見では) バックグラウンドで同じデータベースを使用して複数のサイトを持ちたいというまれなユースケースを満たすように設計されています。これにより、同じ記事を異なるサイトで公開できますが、一部のモデルを 1 つのサイトでのみ利用できるという柔軟性もあります。
複数のプロジェクト (実際にはサイト フレームワークを使用しないプロジェクト) を開発する場合、特別なことを指定する必要はありません。SITE_ID
に設定されているデフォルトを使用できます1
。ウェブサイトのリンクに関する管理者のビューを利用するには、開発データベースでSite
のドメインを に設定できますlocalhost:8000
。
同じデータベースを使用して複数のサイトを開発する (およびサイト フレームワークを利用する) 場合は、各プロジェクトに異なるSITE_ID
が同じデータベース設定を使用する必要があります。開発マシンの各プロジェクトの値SITE_ID
は、ほとんどの場合、運用サーバーの値と同じです。