Flask 設定管理

FlaskFlaskBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Flask アプリケーションにおける設定の扱い方を学びます。設定により、デバッグモードの切り替えやシークレットキーの設定、その他の環境固有の変数など、異なる環境に基づいてアプリケーションの設定を変更できます。

注: コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で Flask サービスの状態をプレビューできます。

Flask アプリケーションを作成する

まず、基本的な Flask アプリケーションを作成しましょう。app.py という名前のファイルを作成し、次のコードを追加します。

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, Flask!'

アプリケーションを実行するには、ターミナルで次のコマンドを実行します。

python app.py

Web ブラウザを開き、http://localhost:5000 にアクセスして、「Hello, Flask!」のメッセージを表示します。

基本設定

次に、Flask アプリケーションにいくつかの基本設定を追加しましょう。同じ app.py ファイルに、次のコードを追加します。

app.config['DEBUG'] = True
app.config['SECRET_KEY'] = 'mysecretkey'

DEBUG 設定はデバッグモードを有効にし、開発中に役立つエラーメッセージを提供します。SECRET_KEY 設定は、セッションクッキーの安全な署名付けやその他のセキュリティ関連のニーズに使用されます。

設定値にアクセスするには、app.config 辞書を使用できます。たとえば、SECRET_KEY の値を表示するには、hello ルートに次のコードを追加します。

@app.route('/')
def hello():
    secret_key = app.config['SECRET_KEY']
    return f'Hello, Flask! Secret Key: {secret_key}'

Flask アプリケーションを再起動し、http://localhost:5000 にアクセスして、シークレットキー付きの更新されたメッセージを表示します。

ファイルからの設定

コード内に設定値をハードコーディングするのは理想的ではありません。特に機密情報の場合には。Flask は、別のファイルから設定を読み込む方法を提供しています。config.py という名前の新しいファイルを作成し、次のコードを追加します。

DEBUG = False
SECRET_KEY ='myothersecretkey'

app.py ファイルで、以前の設定コードを次のものに置き換えます。

app.config.from_object('config')

from_object メソッドは、config モジュールから設定を読み込みます。これで、DEBUGSECRET_KEY の値が config.py ファイルから読み込まれるようになります。

Flask アプリケーションを再起動し、http://localhost:5000 にアクセスして、新しい設定値付きの更新されたメッセージを表示します。

環境に基づく設定

開発、本番、テストなど、異なる環境に対して異なる設定を持つことは一般的です。Flask を使えば、環境変数に基づいて設定を切り替えることができます。config_dev.py という名前の新しいファイルを作成し、次のコードを追加します。

DEBUG = True
SECRET_KEY = 'devsecretkey'

次のコードを持つ config_prod.py という別のファイルを作成します。

DEBUG = False
SECRET_KEY = 'prodsecretkey'

app.py ファイルで、以前の設定コードを次のものに置き換えます。

import os

if os.environ.get('FLASK_ENV') == 'production':
    app.config.from_object('config_prod')
else:
    app.config.from_object('config_dev')

FLASK_ENV 環境変数は、環境を判断するために使用されます。これが 'production' に設定されている場合、本番用の設定が読み込まれます。それ以外の場合、開発用の設定が読み込まれます。

FLASK_ENV 環境変数を 'production' に設定し、Flask アプリケーションを再起動します。http://localhost:5000 にアクセスして、本番用の設定値付きの更新されたメッセージを表示します。

インスタンス フォルダ

Flask は、特定の展開に固有の設定ファイルを格納するためのインスタンス フォルダを提供します。これにより、展開に固有の設定をコードの残りの部分から分離することができます。デフォルトでは、Flask はアプリケーションと同じディレクトリに instance という名前のフォルダを使用します。

app.py ファイルと同じディレクトリに instance という名前の新しいフォルダを作成します。instance フォルダ内に config.cfg という名前のファイルを作成し、次のコードを追加します。

DEBUG = True
SECRET_KEY = 'instancekey'

app.py ファイルで、設定コードの前に次のコードを追加します。

app.instance_path = os.path.abspath(os.path.dirname(__file__))
app.config.from_pyfile('config.cfg')

instance_pathinstance フォルダの絶対パスに設定されます。from_pyfile メソッドは、インスタンス フォルダ内の config.cfg ファイルから設定を読み込みます。

Flask アプリケーションを再起動し、http://localhost:5000 にアクセスして、インスタンス設定値付きの更新されたメッセージを表示します。

まとめ

この実験では、Flask アプリケーションにおける設定の扱い方を学びました。基本的な設定値を設定する方法、ファイルから設定を読み込む方法、環境変数に基づいて設定を切り替える方法、および展開に固有の設定にインスタンス フォルダを使用する方法を学びました。設定は、堅牢で柔軟な Flask アプリケーションを構築する重要な要素です。