これまでの記事ではトップレベルのディレクトリに直接hello.pyというファイルを用意していましたが、この方法は実用的なアプリケーションには向きません。この記事ではFlaskインスタンスを関数の内側で作成する方法について学びましょう。
このFlaskインスタンスを作成するための関数をFlaskではアプリケーション製造工場(The Application Factory)と呼びます。
目次
__init__.pyの作成
まずはおなじみ画面上に Hello World と表示してみましょう。
Flaskプロジェクトのトップレベルディレクトリ(ここではflask-tutorial)にflaskrディレクトリを作成し、その中に次のコードを記述した __init__.py というPythonファイルを作成します。
このファイルに次のように記述しましょう。
import os from flask import Flask def create_app(test_config=None): # Flaskインスタンスの作成と設定 app = Flask(__name__, instance_relative_config=True) app.config.from_mapping( SECRET_KEY='dev', DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'), ) if test_config is None: # load the instance config, if it exists, when not testing app.config.from_pyfile('config.py', silent=True) else: # load the test config if passed in app.config.from_mapping(test_config) # ensure the instance folder exists try: os.makedirs(app.instance_path) except OSError: pass # a simple page that says hello @app.route('/hello') def hello(): return 'Hello, World!' return app
この create_app がアプリケーション製造工場の関数です。
アプリケーションの実行
この時点でflaskコマンドを使ってアプリケーションを実行することができます。
Windows PowerShell でflask-tutorialディレクトリに入り、次のコマンドを実行します。
> $env:FLASK_APP = "flaskr" > $env:FLASK_ENV = "development" > flask run
これでFlaskアプリケーションが実行状態になりました。
ブラウザで確認
ブラウザで確認してみましょう。
任意のブラウザを開き http://127.0.0.1:5000/hello を訪れてみます。
成功です。画面に Hello, World! と表示させることができました。