django-environ
The Twelve-Factor App 的に、アプリの動作パラメータを外部の設定に追い出すためのDjango用サポートライブラリ。
公式ドキュメント: https://django-environ.readthedocs.io/en/latest/
shimizukawa.iconさっそくプロジェクトに適用してみたけど、 django-environ とても良い
string, integer, boolean の型を指定して値を参照できる
booleanの解釈についてプロジェクト個別のルールを持たなくて良い
code:settings.py
import environ
env = environ.Env()
DEBUG = env.bool('DEBUG')
ALLOWED_HOSTS = env.list('ALLOWED_HOSTS')
if DEBUG:
INTERNAL_IPS = env.list('INTERNAL_IPS')
Djangoに特化したサポート機能が統合されているので、1ライブラリで完結する
dj-database-url の機能を内包している、等
code:settings.py
DATABASES = {
'default': env.db_url('DATABASE_URL')
}
環境変数ファイルの適用を環境変数だけでなくファイル指定したい場合
ENV_FILE=.env.local python manage.py runserver で実行して適用する例
code:settings.py
import environ
root = environ.Path(__file__) - 3 # リポジトリルートPATH
env = environ.Env()
if env('ENV_FILE', default=None):
# ENV_FILE 環境変数で.envファイルを指定した場合
env.read_env(env('ENV_FILE'))
elif pathlib.Path(root('.env')).is_file():
# リポジトリrootに .env がある場合 (カレントではない)
env.read_env(root('.env'))
else:
pass # use environment variables without .env file
django-environ · PyPI
Welcome to Django-environ’s documentation! — Django-environ 0.4.4 documentation
This module is a merge of:
envparse
honcho
dj-database-url
dj-search-url
dj-config-url
django-cache-url
and inspired by:
12factor
12factor-django
Two Scoops of Django
shimizukawa.iconの利用例
https://github.com/shimizukawa/django-multiple-type-user-auth/blob/master/apps/apps/settings.py#L16-L21
使ってみたという話
Djangoメモ : python-decouple, django-environで設定情報を管理 - もた日記