フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

Djangoの設定ファイルをenvファイルで管理する

利用用途

  • settings.pyにデータベースやセキュリティトークンの情報が記載されているのはあまり良くないため、envファイルで管理できるようにする

settings.pyファイルの設定(デフォルト)

  • djangoのデフォルトの設定ファイルは下記のようにsettings.pyファイルにベタ書きされているので、gitにアップするとそのままパスワードの情報などアップされてしまう。
 # SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = '<シークレットキー>'
 
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': '<DB>',
    'USER': '<ユーザー名>',
    'PASSWORD': '<パスワード>',
    'HOST': '<ホスト名>',
    'PORT': '3306',
  }
}

 インストール

  • 必要なパッケージ
python3.9 -m pip install python-decouple
python3.9 -m pip install dj_database_url

envファイルで管理する

  • .envファイルを作成する
SECRET_KEY=<シークレットキー>
DEBUG=False
DATABASE_URL=mysql://<ユーザー名>:<パスワード>@<ホスト名>:3306/<DB>

settings.pyファイルの設定(envを参照した場合)

  • 下記のように記述を変更することで.envファイルで管理することができる。
from decouple import config
import dj_database_url

SECRET_KEY = config('SECRET_KEY')

DEBUG = config('DEBUG')

DATABASES = {
  'default': dj_database_url.config(
    default=config('DATABASE_URL')
  )
}