Flask アプリケーションの設定は app.config オブジェクトで管理する。開発・本番・テストなど環境ごとに異なる設定を使い分けるには、環境変数や設定ファイルを活用する。
直接設定する
最もシンプルな方法は、app.config に直接値を設定することである。
from flask import Flask
app = Flask(__name__)
app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'my-secret-key'
辞書のように扱えるが、キーはすべて大文字にする慣習がある。
設定ファイルから読み込む
Python ファイルを設定ファイルとして読み込める。
# config.py
DEBUG = True
SECRET_KEY = 'my-secret-key'
DATABASE_URI = 'sqlite:///app.db'
app.config.from_pyfile('config.py')
クラスベースの設定
環境ごとの設定をクラスで管理すると、継承により共通設定を再利用できる。
# config.py
class Config:
SECRET_KEY = 'default-secret'
class DevelopmentConfig(Config):
DEBUG = True
DATABASE_URI = 'sqlite:///dev.db'
class ProductionConfig(Config):
DEBUG = False
DATABASE_URI = 'postgresql://...'
app.config.from_object('config.DevelopmentConfig')
環境変数からの読み込み
機密情報は環境変数から取得するのが安全である。
import os
app.config['SECRET_KEY'] = os.environ.get('SECRET_KEY', 'fallback-key')
app.config['DATABASE_URI'] = os.environ.get('DATABASE_URI')
.env ファイルを使う場合は python-dotenv パッケージを利用する。
from dotenv import load_dotenv
load_dotenv()
主要な設定項目
| DEBUG | デバッグモードの有効化 |
| SECRET_KEY | セッションや署名に使う秘密鍵 |
| TESTING | テストモードの有効化 |
| SERVER_NAME | サーバーのホスト名とポート |
SECRET_KEY は本番環境では十分にランダムで長い値を設定すること。Git リポジトリにはコミットせず、環境変数で管理するのが安全である。