【Python/Django】環境変数を使うには
環境変数とは
システムが持っている共通の変数という感じのものです。
環境変数を使う時は基本的にはosに対してのイメージなんですが(よくパスとかを入れてます)、
同じ感じでDjangoを実行するプロジェクトの範囲内で共通の変数が定義できます。
※osの環境変数とは全くの別物なのでDjangoで作った環境変数がosに影響してくることは無いです。
よく使用する場面としては、GitHubとかにコードを公開する時にDjangoのプロジェクトのシークレットキーや
TwitterAPIのアクセスキーなどの公開したくない情報を隠すために使います。
環境変数の値だけ違うファイルに分け、.gitignoreで共有を除外するといった感じです。
今回は「django-environ」というパッケージで環境変数の管理をする方法を紹介します。
インストール
インストールにはpipを使います。
code:tarminal
pip install django-environ
「.env」ファイルの作成
環境変数を管理する.envというファイルをmanage.pyの置いてあるディレクトリに作成し、
変数=値という形で書いていきます。
※「変数」と「=」と「値」のそれぞれの間に空白を入れたりするとエラーになるので注意です。
code:(例).env
SECRET_KEY=secretsecretsecret
DATABASE_URL=sqlite:///db.sqlite3
実際に使ってみる
code:python
import environ
env = environ.Env()
#env = environ.Env(DEBUG=(bool,False)) env.read_env('.env')
env.bool('DEBUD')
env.list('ALLOWED_HOSTS')
SECRET_KEY = env('SECRET_KEY')
env.get_value('環境変数',型)を使うことで、環境変数を型変換して呼び出すことも出来ます。
使える型としては(str, int, dict, list, tuple, bool)があります。
リストやタプルにするときは環境変数の値の方をカンマ区切りにしておくと上手く分けられるそうです。
またデータベースのURLをDATABASE_URLという名前で登録しておくことで
code:python
DATABASES = {
'default':env.db(),
}
こんな感じに省略して書くことができるようになります。