Djangoアプリのsettings.pyにはSECRET_KEYやデータベース情報などの機密情報が記載されています。これらを管理するツールとして便利なdjango-environを使ってみましょう。
Djangoアプリでの機密情報の扱いに関しては次の記事もご参照ください。
DjangoアプリのSECRET_KEYなどの機密情報を別ファイルで管理
この『Djangoアプリの機密情報を別ファイルで管理する』ためのモジュールがdjango-environです。
目次
django-environのインストール
django-environは外部モジュールなのでインストールする必要があります。
Djangoアプリの動作環境で次のコマンドを実行します。
pip install 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'), } }
これだけです。