2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python-decoupleを使ってDjangoの設定ファイルを管理する

Posted at

なぜ必要なのか

基本的に多くの導入記事では設定ファイルに各種設定をハードコーディングしているが、いわゆるSECRET_KEYや環境変数などを直接ハードコーディングするのは運用的、セキュリティ的な観点などから実用的に考えるとよろしくない。

なので設定を隔離できるようなモジュールを導入し、別に管理してそこから読み込むというのがハードコーディングを避ける手段となる。
PythonではPython-decoupleというモジュールがあるため、Djangoでのsettings.pyを例に使ってみようと思う。

なお、今回作成したプロジェクトはこちらから見る事ができるので気になる方はどうぞ。

導入

インストールし、

$ pip install python-decouple
$ django-admin startproject decoupleproject

プロジェクトを作成。

既にPython-decoupleをインストールしてあるため、manage.pyと同じディレクトリに.envファイルを作成します。

スクリーンショット 2020-06-13 14.53.09.png

そして、ここに各種設定ファイルでハードコーディングしたくない情報を.envに書き、sttings.pyでインポートすれば環境ごとに切り替え流事ができるので非常に有用です。

例えば、今回は

settings.py
from decouple import config


# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))


# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/

# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = config('SECRET_KEY')

# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = conig('DEBUG' default=False,cost=bool)

ALLOWED_HOSTS = config('ALLOWED_HOSTS',cost=Csv())
.env
SECRET_KEY = '6@gw!zj8jjwjr%da0g=&1dzmhjbi3p%r@6157##n0oix#&ybv2'
DEBUG = True
ALLOWED_HOSTS = []

こうした書き方をすることによって、外部からは知られたくない情報の分離が出来ます。

他にもデータベースの接続情報を隠すようなモジュールもあるので近いうちに紹介したいと思います。
お疲れ様でした。

2
7
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
2
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?