django備忘録27 Settings for Different Environments
開発段階ごとのSettings.py の設定方法
webfaction を利用する(会員登録などを済ませる)
settings.py を設定していく
ローカル(開発環境)では、DEBUG=True 運用時には、DEBUG = Falseにしたい。
settings フォルダを作る(projectルート?settings.pyがあるところ)
settings フォルダ内に、init.py を作成する(空のデータでいい。) python フォルダと認識させるため。
今のsettings.pyをrenameして、old_settings.pyにする。(移管用に残しておく)
settings/base.py を作成する → old_settings.pyをひとまず全て、コピペする
wsgi.py の内容を確認する。
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trydjango18.settings")
というところがあるが、これは、settings.py(現在のold_settings.py)をsetするという意味になっているので、ここは以下のような設定が必要。
- settings/init.py の中に、以下のコードを挿入する。
from .base import *
from settings.base.py から、import * 全てをimportする?という意味のコード? init.py にそのコードを書くので、settingsを呼び出した段階で、上記のコードが読み込まれるため、 trydjango18.settings(.init)ということに等しい設定になっているということなのか?
- settings/base.py のDIR関連もちょっと修正が必要。なぜなら、 src/trydjango18/settings/base.py というようにちょっと階層が変わっているから。(以前は、src/trydjango18/settings.py だったんで、階層が1つ深くなっている。)
解決策は、一番簡単な方法で、BASE_DIRに、もう一つ階層を加えるというやり方がある。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
- init.py にtry, exceptのコードを追加して、環境ごとにファイルを読み込む準備をする
settings/init.py
from .base import * try: from .local import * except: pass try: from .production import * except: pass try: from .imac import * except: pass try: from .macbookpro import * except: pass
試しに、local.pyに、base.pyを全てコピペして、DEBUG=Falseにして、runserverしてみる。 すると、多分、local.pyを読み込んで、DEBUG=Falseのため、runserver できないとなるはず。
ALLOWED_HOSTS = [*] にして、再度試すとDEBUG=Falseの状態で、runserverできるので、試してみる。
テストできたら、local.pyの設定は、元に戻しておく(debug=true, allowed_hosts=[])