hikaru’s diary

Django Engineer

【Django】環境変数を設定する

コマンド一つ一つに環境変数を設定するのすごく面倒臭くなったので。

django-environをインストール

pip install django-environ


manage.pyと同じディレクトリに.envを作成
.env

DB_HOST=localhost
DB_NAME=postgres
DB_USER=postgres
DB_PASSWORD=****
SECRET_KEY=****


settings.pyで環境変数を使ってみる

import environ
import os

BASE_DIR = Path(__file__).resolve().parent.parent
env = environ.Env()
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))
SECRET_KEY = env('SECRET_KEY')

既に設定してある環境変数を消しても起動できたら成功。

私は使っていませんが、他に色んな機能があるっぽいので気になる方はこの記事の下にあるgit見てください。

DATABASES = {
    # read os.environ['DATABASE_URL'] and raises
    # ImproperlyConfigured exception if not found
    #
    # The db() method is an alias for db_url().
    'default': env.db(),  # ここ

    # read os.environ['SQLITE_URL']
    'extra': env.db_url(
        'SQLITE_URL',
        default='sqlite:////tmp/my-tmp-sqlite.db'
    )
}


追記:env('DEBUG')などで渡される変数は文字型なので注意

参考

github.com