はじめに
この実験では、Flask アプリケーションにおける設定の扱い方を学びます。設定により、デバッグモードの切り替えやシークレットキーの設定、その他の環境固有の変数など、異なる環境に基づいてアプリケーションの設定を変更できます。
注: コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で Flask サービスの状態をプレビューできます。
This tutorial is from open-source community. Access the source code
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
この実験では、Flask アプリケーションにおける設定の扱い方を学びます。設定により、デバッグモードの切り替えやシークレットキーの設定、その他の環境固有の変数など、異なる環境に基づいてアプリケーションの設定を変更できます。
注: コードファイルは自分で作成し、環境で実行する必要があります。Web 5000 で 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
モジュールから設定を読み込みます。これで、DEBUG
と SECRET_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_path
は instance
フォルダの絶対パスに設定されます。from_pyfile
メソッドは、インスタンス フォルダ内の config.cfg
ファイルから設定を読み込みます。
Flask アプリケーションを再起動し、http://localhost:5000
にアクセスして、インスタンス設定値付きの更新されたメッセージを表示します。
この実験では、Flask アプリケーションにおける設定の扱い方を学びました。基本的な設定値を設定する方法、ファイルから設定を読み込む方法、環境変数に基づいて設定を切り替える方法、および展開に固有の設定にインスタンス フォルダを使用する方法を学びました。設定は、堅牢で柔軟な Flask アプリケーションを構築する重要な要素です。