Djangoアプリで環境変数をdjango-environで管理する

Djangoアプリのsettings.pyにはSECRET_KEYやデータベース情報などの機密情報が記載されています。これらを管理するツールとして便利なdjango-environを使ってみましょう。

Djangoアプリでの機密情報の扱いに関しては次の記事もご参照ください。

DjangoアプリのSECRET_KEYなどの機密情報を別ファイルで管理

この『Djangoアプリの機密情報を別ファイルで管理する』ためのモジュールがdjango-environです。

目次

django-environのインストール

django-environは外部モジュールなのでインストールする必要があります。

Djangoアプリの動作環境で次のコマンドを実行します。

pip install django-environ

Djangoアプリで環境変数をdjango-environで管理する

インストールはこれだけです。

.envファイルの作成と記述

manage.pyと同じ階層(このサイトのDjango構成ではプロジェクト直下)に「.env」という名前でファイルを作成します。

このファイルに環境変数などの機密情報を分離します。

SECRET_KEY=django-insecure-*************************************
DEBUG=True

DATABASE_ENGINE=使用するDBのエンジン(sqlite3ならdjango.db.backends.sqlite3)
DATABASE_DB=データベース名
DATABASE_USER=ユーザー名
DATABASE_PASSWORD=パスワード
DATABASE_HOST=ホスト名
DATABASE_PORT=ポート番号

=の前後に半角スペースが入ったり、文字列をシングルクォーテーションで囲っていたりするとエラーになるので注意しましょう。

settings.pyで環境変数を呼び出す

.envファイルに分けた変数をsettings.pyで呼び出します。

import os
import environ

env = environ.Env()
env.read_env('.env')

SECRET_KEY = env('SECRET_KEY')
DEBUG = env('DEBUG')

DATABASES = {
    'default': {
        'ENGINE': env.get_value('DATABASE_ENGINE', default='django.db.backends.sqlite3'),
        'NAME': env.get_value('DATABASE_DB', default=os.path.join(BASE_DIR, 'db.sqlite3')),
        'USER': env.get_value('DATABASE_USER', default='django_user'),
        'PASSWORD': env.get_value('DATABASE_PASSWORD', default='password'),
        'HOST': env.get_value('DATABASE_HOST', default='localhost'),
        'PORT': env.get_value('DATABASE_PORT', default='5432'),
    }
}

これだけです。

このエントリーをはてなブックマークに追加

コメントを残す

頂いたコメントは一読した後表示させて頂いております。
反映まで数日かかる場合もございますがご了承下さい。