概要
ローカル開発環境、ステージングサーバー、本番サーバーとでDjango全体の設定を変えたいとき、settingsファイルを分割しておいて環境変数でどれを使うかコントロールするのが便利です。
やり方自体は他の方が書いてくださっていますが、PyCharmを使っていて追加で引っかかったポイントがありましたので、案内いたします。
他のIDEでも同様のことがあるかもしれません。その時は参考にしていただければと思います。
settings分割について
以下のリンク先をご参考ください。
- https://qiita.com/aion/items/ca375efac5b90deed382
- https://qiita.com/okoppe8/items/e60d35f55188c0ab9ecc
私も参考にさせていただきました。ありがとうございました。
PyCharmの場合の注意点
PyCharmはコマンドを打たなくてもボタン一つで開発用サーバーを立ち上げてくれたりするので、とても便利です。
ただし、Djangoプロジェクト新規作成直後のmanage.pyおよびwsgi.pyが
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "プロジェクト名.settings")
と、setdefaultになっていますね。
そのため何かの拍子にこの環境変数がPyCharmのRun/Debug configへ自動で登録されてしまい、
思ったsettingsファイルを読み込んでくれなかった(のに気づかず何時間も消費した)ことがありました。
解決法
大きく2つあるかと思います。
Run/Debug configをこまめに確認する
何か怪しい、おかしいと思ったらとりあえず見てみましょう。
初心者ならばとりあえずここからでもよいのかなと思います。
manage.pyおよびwsgi.pyの上記の行を書き替える
たとえば以下のようにします。
os.environ.get("DJANGO_SETTINGS_MODULE")
こうすると、デフォルトの値がなくなるので、manage.pyは環境変数で与えられたsettingsファイルを読んで立ち上がるか、または立ち上がらないという挙動になります。
狙った以外のことが起こらなくなると、頭の負担が減るので私はこちらの方法が好みです。
ただし環境変数"DJANGO_SETTINGS_MODULE"の入力が毎回必須となるので、手打ちだと面倒なことになります。
しかしせっかくのIDEですから、PyCharmへ設定してそんな手間も全部消してしまいましょう。
開発用サーバー
画面上部にあるサーバーを立ち上げる三角形のボタンの左の枠をクリックして、Run/Debug configウィンドウを出すと設定できます。
Tools -> Run manage.py Task...
マイグレートなどのためには、こちらから出せる専用のCLIを使うと便利です。
こちらも環境変数を設定できます。
File -> Settings -> Languages & Frameworks -> Django
とクリックしていって、Magage.py tasksのEnvironment variablesへ設定すればOKです。
終わりに
以上、初心者のPyCharmユーザーがDjangoでsettings分割したときの引っかかりポイントでした。
初投稿のため拙い部分もありましたでしょうがご容赦願います。
情報不足気味の初心者引っかかりポイントやニッチな引っかかりポイントなど
自分が初心者であるからこそ気づくこともあるかと思いますので、
そういったのを見つけて解決できたらなるべく投稿するようにしていきたいと思います。
ご清聴ありがとうございました。