メモ_Flaskアプリでapp.py以外でルート定義を行う方法

Flaskアプリを開発していて、app.pyがだんだん肥大化して見通しが悪くなることがあります。ルート(エンドポイント)定義をapp.py以外に切り出してコードをスッキリさせることができます。

一般的な方法は、FlaskのBlueprintを使用することです。Blueprintは、アプリケーションの機能をモジュール化して、アプリケーション全体にわたって再利用可能なコンポーネントを作成するための仕組みです。

 

1. Blueprintを作成する

別のファイルにルートを定義するために、新しいPythonファイル(例:routes.py)を作成し、Blueprintを使用してルートを定義します。


# routes.py

from flask import Blueprint

# Blueprintオブジェクトを作成します。
# "my_routes"はBlueprintの名前で、第2引数はBlueprintが属するモジュールの名前です。
my_routes_bp = Blueprint('my_routes', __name__)

# ルートを定義します。
@my_routes_bp.route('/my_route')
def my_route():
    return 'This is my custom route!'

Blueprintを登録する

app.py(または別のエントリーポイントファイル)で、作成したBlueprintをアプリケーションに登録します。


# app.py

from flask import Flask
from routes import my_routes_bp  # 作成したBlueprintをインポートします

app = Flask(__name__)

# Blueprintを登録します。
app.register_blueprint(my_routes_bp)

if __name__ == "__main__":
    app.run()

これで、routes.pyで定義した/my_routeエンドポイントが、app.pyで定義したFlaskアプリケーションに組み込まれます。