たなブログ 教養を高めて生涯資産を増やすブログ(`・ω・´)

【Django】環境変数を効率的に管理する「django-environ」の使い方

Djangoを学ぶ PR

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

今回は、djangoを使って環境変数を効率的に管理する方法を紹介したいと思います。

・ ファイル内に含まれているSECRET KEYを別管理したい
・ データベース接続に必要な情報をファイル内にハードコードしたくない

こんな時に使える方法になります。

具体的には、djangoファイル内の「settings.py」に含まれる以下4つの情報を「django-environ」という方法を用いて管理していきます。

・ SECRET KEYに関する情報(①)
・ データベース接続に必要な機密情報(②)
・ 開発環境と本番環境で切替が必要な情報(DEBUG(③)やALLOWED_HOST(④))

【こんな人に読んで欲しい記事です】

● djangoファイル内の環境変数を効率的に管理したいと考えている方

● django-environという方法を使ってみたい方

僕も、個人開発をしているときに、「本番環境(サーバー内)にDBのパスワードはハードコードしたくないな」と思っていましたが、今回の方法ですべて解決しました。

同じように、「環境変数をうまく管理したいけど、具体的な方法がわからず悩んでいる」といった方は、参考にしてみてください。

【ステップ①】対象コードの確認

まず最初に、先ほど示した「4つ」の情報がどこに記載されているか確認しておきましょう。

すべて「settings.py」ファイル内に記載されています。
コード箇所を以下画像で確認しておいてください。

今回管理対象としていくコードの記載箇所(1/2)
今回管理対象としていくコードの記載箇所(2/2)

最終的に、この部分を「django-environ」を用いて修正していきます。

【ステップ②】「.env」ファイルの設定

続いて、環境変数を記載するファイル「.env」を作成していきます。

手順は以下の通りです。
・ 「.env」ファイルを「manage.py」と同じ階層に新規作成する
・ 「.env」ファイル内に環境変数を移行する

イメージとしては、以下のような感じです。

「.env」ファイル内の記載コード

今回は「開発環境」を前提としていますが、「本番環境」でもサーバー内に同じようなファイルを作成しておけば、簡単に管理することが出来ます。

ちなみに、4行目のデータベース設定の部分は「dj-database-url」の記法を用いています。
>> GitHubで詳細を確認する

GitHubから引用した「dj-database-url」の記述方法は以下の通りです。

「dj-database-url」の記法(GitHubより引用)

今回は便宜的にデフォルトの「sqlite」を用いていますが、必要に応じて設定を変更してみてください。

「.env」ファイルの設定自体は以上で完了となりますが、忘れずに「.gitignore」を用いてGit管理対象外としておくようにしましょう。

「今一つやり方がわからない」という方は、以下参考にしてみてください。

【ステップ③】「settings.py」ファイルの設定

最後に、ステップ①で確認した箇所を修正していきます。

ここでの手順は以下の通りです。
・ 「django-environ」をpipでインストール
・ 「env」のインスタンスを作成
・ 「.env」ファイルから情報を取得するように設定

今回省略していますが、初めて使う方は「pip install django-environ」でインストールしておいてください。

インストール後は、以下のようにインスタンスを作成します。

envインスタンスの作成

その後、ハードコードしてあった部分を以下のように修正します。
先ほど作成した「.env」ファイルの変数を読み込むイメージですかね。

envファイルの読込(1/2)

「ALLOWED_HOSTS」については、「.env」ファイル内でカンマ(,)区切りで設定していたので、リストとして読み込めるようにしています。

最後にデータベース部分です。

envファイルの読込(2/2)

以上のように設定するだけで、簡単に環境変数を管理することが出来ます。

さいごに

今回は「django-environ」という方法を用いて環境変数を管理する方法を紹介してきました。

実際にコードを書くときは、エラーがないかチェックしつつ進めるようにしてみてください。

「Djangoについてもっと勉強してレベルアップしたい!」という方は、以下で勉強法について紹介しているので参考にしてみてください。

では今回はこのへんで。