Flaskにおける設定ファイルの書き方

Flaskの設定ファイルの書き方

Flaskアプリケーションでは、様々な設定を管理する必要があります。これらの設定は主に2つの方法で行うことができます。

方法1: `from_object` を使用する

まず、プロジェクトのルートディレクトリに `settings.py` という設定ファイルを作成します。このファイル内で、異なる環境(開発、本番、テスト)用の設定クラスを定義します。

class 基本設定(object):
    DEBUG = True
    SECRET_KEY = "fsdajklfjdsalk1654356"
 
 
class 本番環境設定(基本設定):
    DEBUG = False
 
 
class 開発環境設定(基本設定):
    pass
 
 
class テスト環境設定(基本設定):
    pass

次に、メインのアプリケーションファイル(例: `app.py`)でこの設定を読み込みます。

from flask import Flask
 
アプリケーションインスタンス = Flask(__name__)
アプリケーションインスタンス.config.from_object("settings.開発環境設定")
 
 
@アプリケーションインスタンス.route("/", methods=["GET", "POST"])
def ホームページ():
    return "ホームページ"
 
 
if __name__ == '__main__':
    アプリケーションインスタンス.run()

from_object()メソッドは、指定されたクラスのオブジェクトを設定としてアプリケーションに読み込みます。内部的には、Pythonのimportlibモジュールを利用してクラスを動的にインポートします。設定ファイルは通常、プロジェクトのルートディレクトリに配置します。

方法2: アプリケーションファイル内で直接設定を記述する

設定を別ファイルに分ける代わりに、アプリケーションファイル内で直接設定を定義することも可能です。

アプリケーションインスタンス = Flask(__name__)
# 設定を直接記述
アプリケーションインスタンス.config.update({
    'DEBUG': True,
})
 
 
@アプリケーションインスタンス.route('/hello')
def hello_world():
    return "hello world"
 
 
if __name__ == '__main__':
    アプリケーションインスタンス.run()

主な設定項目

Flaskでよく使われる設定項目は以下の通りです。

{
    'DEBUG':                                get_debug_flag(default=False),  # デバッグモードの有効化
    'TESTING':                              False,                          # テストモードの有効化
    'SQLALCHEMY_ECHO'                       False,                          # コンソールへのSQL出力
    'SECRET_KEY':                           None,                           # 秘密鍵の設定
    'PERMANENT_SESSION_LIFETIME':           timedelta(days=14),             # セッションの有効期間
    'PROPAGATE_EXCEPTIONS':                 None,
    'PRESERVE_CONTEXT_ON_EXCEPTION':        None,
    'USE_X_SENDFILE':                       False,
    'LOGGER_NAME':                          None,
    'LOGGER_HANDLER_POLICY':               'always',
    'SERVER_NAME':                          None,
    'APPLICATION_ROOT':                     None,
    'SESSION_COOKIE_NAME':                  'session',
    'SESSION_COOKIE_DOMAIN':                None,
    'SESSION_COOKIE_PATH':                  None,
    'SESSION_COOKIE_HTTPONLY':              True,
    'SESSION_COOKIE_SECURE':                False,
    'SESSION_REFRESH_EACH_REQUEST':         True,
    'MAX_CONTENT_LENGTH':                   None,
    'SEND_FILE_MAX_AGE_DEFAULT':            timedelta(hours=12),
    'TRAP_BAD_REQUEST_ERRORS':              False,
    'TRAP_HTTP_EXCEPTIONS':                 False,
    'EXPLAIN_TEMPLATE_LOADING':             False,
    'PREFERRED_URL_SCHEME':                 'http',
    'JSON_AS_ASCII':                        True,
    'JSON_SORT_KEYS':                       True,
    'JSONIFY_PRETTYPRINT_REGULAR':          True,
    'JSONIFY_MIMETYPE':                     'application/json',
    'TEMPLATES_AUTO_RELOAD':                None,
}

タグ: flask Python 設定 構成

7月24日 18:25 投稿