私はDjango の 2 つのスクープ:複数の設定ファイルに関するDjango 1.6 のベスト プラクティスのアプローチに従っています。Django 1.7 と virtualenvwrapper を使用しています。
私のセットアップは次のとおりです。
project/
app1/
app2/
project/
__init__.py
settings/
__init__.py
base.py
local.py
production.py
manage.py
Django が使用する設定ファイルをどのように認識しているかについて、私は少し混乱しています。manage.py を実行するたびに設定ファイルを指定したくありません。omouse anser here で説明されているように、DJANG_SETTINGS_MODULE 環境変数を設定したいと思います。
私を混乱させるのは、 wsgi.py ファイルに次の行があることです。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings.production")
このファイルは本番サーバーでのみ使用されますか? サーバーで DJANGO_SETTINGS_MODULE 環境変数が既に定義されている場合はどうなりますか?
ローカルで実行する場合、コンソールを開くたびに DJANGO_SETTINGS_MODULE 環境変数を設定する必要があることを理解しています。ここで、virtualenvwrapper で postactivate フックを定義できることを読みました。このフックは、環境をアクティブにするたびに必要な環境変数を作成します。
これは、正しい DJANGO_SETTINGS_MODULE 環境変数がローカル マシンに読み込まれるようにするための推奨される方法ですか? ホスティング サーバーにも同様のファイルをセットアップする必要がありますか? ホスティングに PythonAnywhere を使用する予定です。
最後に、ステージング サーバーを実行している場合、Django にステージング設定ファイルを読み込むように指示するにはどうすればよいでしょうか? ステージング サーバーは本番サーバーと実質的に同じなので、ステージング サーバー用に別の wsgi.py ファイルが必要だと思いますが、それはアンチ パターンのようです。