django-environを使ってみる

2020年12月21日

django-environを使ってみる

djangoのsettings.pyには色々な設定が書き込まれています。ここには漏洩させてはいけない情報が多々記載されているのでセキュリティや管理の面で「SECRET_KEY」や「DB_PASSWORD」等の値は環境変数にて管理するのがセオリーとの事。

djangoには簡単に設定してくれる「django-environ」と言うおすすめのライブラリがあります。今回はそれを使用してみたいと思います。

参考:
  ・[Django] django-environで環境変数を管理してみる
  ・Djangoで環境変数?ならdjango-environを使おうか。

ライブラリインストール

ライブラリをインストールします。今回はpipを使用します。


pip3 install django-environ

環境変数のファイルを設置する

「.env」と言う名前でファイルを生成します。任意の場所に生成して下さい。githubなどパブリック環境を使用している場合はgitignoreを設定してあげましょう。


touch .env

私は下記の階層に設置しました。


tree -a -L 2
.
├── django_project
│   ├── config
│   ├── manage.py
│   └── ...
├── .env
├── .git
└── .gitignore

ファイルの中身は下記の通りです。大事な値を環境変数に設定してあげます。


#DEBUG
DEBUG=False
#ALLOWED_HOSTS
ALLOWED_HOSTS=xxx.xxx.xxx.xxx
#DB
DB_ENGINE=django.db.backends.mysql
DB_NAME=kaosumonkikowai
DB_USER=houdoukyokucho

環境変数を読み込む

settings.pyは下記の通りです。
#1.environをインポートしたらインスタンス化して先ほど作成した「.env」を読み込んであげましょう。
#2.env('xxx')で設定した環境変数を読み込みます。何も指定しないと「string型」になります。「bool値」を指定する時は「env.bool」と記載してあげてください。


#1
import environ

env = environ.Env()
env.read_env('/path/to/.env')
#私の場合は「env.read_env('/home/web/.env')」

...

#2
DEBUG = env.bool('DEBUG')

...

DATABASES = {
    'default': {
        'ENGINE'  : env('DB_ENGINE'),
        'NAME'    : env('DB_NAME'),
        'USER'    : env('DB_USER'),
        'PASSWORD': env('DB_PASSWD'),
        'HOST'    : env('DB_HOST'),
        'PORT'    : env('DB_PORT'),
    }
}

2020年12月21日