これを行う良い方法は、実際に OS で環境変数を設定し、モジュール内から Python コードでそれを確認することenvironment
です (以下を参照)。
注:ディレクトリ構造に関して、あなたに合ったものを使用してください-私<my app>/conf/envs/<some env>.py
は環境固有の設定に使用します
# twoscoops/conf/envs/current.py
"""
Imports the proper settings, based on the deployment environment's name (set
as an environment variable), defaulting to local settings.
"""
import os
from django.core.exceptions import ImproperlyConfigured
# Environments (these can be called anything you want)
ENV_LOCAL = 'local'
ENV_PROD = 'prod'
DEPLOYMENT_ENVS = (ENV_LOCAL, ENV_PROD)
# Get the deployment environment's name from the os environment
DEPLOYMENT_ENV = os.getenv('DJANGO_DEPLOYMENT_ENV', ENV_LOCAL)
# Ensure the deployment env's name is valid
if DEPLOYMENT_ENV not in DEPLOYMENT_ENVS:
raise ImproperlyConfigured(
u'Invalid `DJANGO_DEPLOYMENT_ENV`: {d}'.format(d=DEPLOYMENT_ENV)
)
# Import env-specific settings
if DEPLOYMENT_ENV == ENV_LOCAL:
# Local, native testing
from twoscoops.conf.envs.local import *
if DEPLOYMENT_ENV == ENV_PROD:
# Production
from twoscoops.conf.envs.prod import *
各メイン設定モジュールに追加from twosscoops.conf.envs.current import *
するだけです (1 つだけの場合もあれば、API 用に 1 つ、Web サイト用に 1 つなど)。
上記の例のデフォルトはtwoscoops.conf.envs.local
です。別の env を使用したい場合 (私の例では、ちょうどローカルがあります)、シェルまたはサーバーを起動する前に (または uWSGI を起動する前に Upstart スクリプトで)、次のように環境変数prod
を追加するだけです:DJANGO_DEPLOYMENT_ENV
you@your-server$ export DJANGO_DEPLOYMENT_ENV=prod
you@your-server$ python manage.py shell
Windows では、環境変数を設定することもできます (私はコマンド ラインと GUI を使用すると信じています。Google が詳しく説明します)。