LoginSignup
1
1

More than 1 year has passed since last update.

django-environを使ってSECRET_KEYを.envから読み込む方法

Posted at

目的

djangoのsettings.pyにはSECRET_KEYやDBのパスワードなど重要で外部に公開したくないものがあるはず。

そこでそれらを.envファイルに記述し、その.envファイルをgitignoreに追加することで、外部からはそのキーを見れないようにしようと思う。

概要

django-environを使って、.envファイルを読み込む

実装

django-environ公式にあるように実装していく。

pipでdjango-environをインストール

$ pip install django-environ

各ファイルを編集していく

settings.py

settings.py
import environ

# instanceを作成
env = environ.Env(
    # 初期値を設定
    DEBUG=(bool, False)
)

# .envファイルのパスを指定するためにBASE_DIRをmanage.pyのある階層に指定
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# manage.pyのある階層にある.envを読み込む
environ.Env.read_env(os.path.join(BASE_DIR, '.env'))

# .envのSECRET_KEYをSECRET_KEYに代入
SECRET_KEY = env('SECRET_KEY')

.envファイル

SECRET_KEY = 'cecnecdeeincaliohejfioq3'

こうすることでsettings.pyに

SECRET_KEY = 'cecnecdeeincaliohejfioq3'

が記述されたことになる。

ここでローカルサーバーを立ち上げて問題ないか確認してみる。

$ python manage.py runserver

問題発生

django.core.exceptions.ImproperlyConfigured: Set the SECRET_KEY environment variable

!?!?!?!?何で!?

SECRET_KEY = 'cecnecdeeincaliohejfioq3'
このように = の周りにスペースを入れたくなるがこのスペースが入るとSECRET_KEYは読み込まれない。

そこで
SECRET_KEY='cecnecdeeincaliohejfioq3'
とすることで問題なくSECRET_KEYが読み込まれる。

ここで実は数時間詰まっていた。

参考文献

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1