べくとりうむ.py Written by TicTak(※現在ブログ工事中のため、見づらい点があり申し訳ないです)

【Django】開発環境用と本番環境用にファイルを分割する方法【分割すると可読性が上がります】

Django python

こんにちは、ちくたっく(@tictak_py)です。

今回は、Djangoで作ったファイルを「開発用」と「本番用」に分割する方法を紹介していきます。

具体的には、Djangoプロジェクトで作成された「settings.py」ファイルを「共通用」「開発用」「本番用」の3つに分割することで、効率的にWeb開発を進められるようにすることを目的としていきます。

こんな方に読んで欲しい記事です

  • DjangoでのWeb開発を効率的に進めていきたい方
  • Django設定ファイル「settings.py」を分割して、運用出来るようにしたい方

なお、個人開発レベルを想定しているので、必要最低限の内容を分割していくことにします。

ファイル分割の全体イメージ

最初に、ファイルを分割するイメージ図を具体的に示しておきます。

ファイル「settings.py」の分割イメージ図

図の左側が「ファイル分割前」の状態で、右側が「ファイル分割後」のイメージとなります。

基本的な方針としては、デフォルトの「settings.py」ファイルを使い回せる部分は「共通ファイル」として利用し、開発環境と本番環境でコードを変える必要がある部分は「別ファイル」として設定しています。

上記のイメージ図にあてはめて説明すると、以下の通りです。

  • 共通用ファイル:「settings_common.py」のファイル。開発・本番部分は除外
  • 開発用ファイル:「settings_dev.py」のファイル。デバックとホスト部分を追記*
  • 本番用ファイル:「settings.py」のファイル。デバックとホスト部分を追記*

* 開発用ファイルと本番用ファイルについては、共通用ファイルの内容を引き継ぐために以下のコマンドを記載しておくことになります。

from .settings_common import *

以上の内容を踏まえた上で、具体的に各ファイルをどのように設定していくか見ていきましょう。

開発用ファイル|settings_dev

開発環境に関するコードは「settings_dev.py」ファイルに記載していきます。
ファイル名は何でもいいです。

ファイル内のコードは以下のようなイメージになります。

開発環境用のコード|settings_dev.py

開発環境用ファイルのポイントは以下3点です。

  1. 共通用ファイルの設定内容を引き継ぐ
  2. 開発時は、デバックモードは「True」でOK
  3. 開発時は、許可するホストは空欄のままでOK

留意点としては、今まで通りの方法では「開発サーバーの起動」が出来ないということです。

当初、僕自身もハマったことがあるのですが、「settings.py」ファイルを分割した後に「python3 manage.py runserver」のコマンドを入力しても、開発サーバーが起動せずエラーとなることがありました。

個人的な解釈ですが、その理由は「manage.py」ファイルをのぞいてみるとわかります。プロジェクト名がmyprojectである前提ですが、「manage.py」ファイルの中には以下赤枠のように「myproject.settings」という部分があります。

manage.pyファイルの内容

これは、manage.pyを起動した時に「myproject.settings」を読み込むという意味なので、開発用ファイルではなく本番用ファイルが読み込まれていることになります。
(本番用ファイルsettings.pyの中身が空だと、エラーになるはずです。)

そのため、開発サーバーを起動させるときには、「- – settingsオプション」を付けた方が良いです。

python3 manage.py runserver --settings myproject.settings_dev

本番用ファイル|settings

本番環境に関するコードは「settings.py」ファイルに記載していきます。
こちらもファイル名は何でもいいです。

ファイル内のコードは以下のようなイメージになります。

本番環境用のコード|settings.py

本番環境用ファイルのポイントは以下3点です。

  1. 共通用ファイルの設定内容を引き継ぐ
  2. 本番時は、デバックモードを「False」にする
  3. 本番時は、許可するホストを指定する

デバックモードを「True」のままにしておくと、エラー発生時にプログラムコード等の情報がブラウザ上に表示されることとなってしまいます。個人開発でまだ誰も見ない状況であればいいかもしれませんが、基本的には「False」設定にしておきましょう。

また、許可するホスト名には、利用している「サーバーのIPアドレス」や「独自ドメイン」を設定すればOKです。Djangoで独自ドメインを使えるようにする方法は以下記事でも紹介しています。

冒頭でもお伝えしたように、ここでは最低限の内容しか記載していないので、必要に応じて「ロギング」や「静的ファイルの配置場所」などを設定するようにしてみてください。

「ファイルの分割方法についてもっと詳しく知りたい」という方には、書籍動かして学ぶ!Python Django開発入門がオススメです。今回紹介したファイルの分割方法に加えて、ロギングやメール処理などの内容も紹介もされています。

共通用ファイル|settings_common

最後に、共通用ファイルについてです。「開発用」と「本番用」に共通するコードは「settings_common.py」ファイルに記載します。

ファイル内のコードは、もとのコードから「DEBUG」や「ALLOWD_HOSTS」を除いただけなので、キャプチャ画面は省略しています。

さいごに

以上で、ファイルの分割は完了となります。

設定ファイルを「開発用」と「本番用」に分割することで、効率的なWeb開発が可能となるので是非チャレンジしてみてください。コードの読みやすさである可読性も大幅に上昇することになるので、おすすめです。

では今回はこのへんで。