BOP - The Future of Creative Engineers -


← ホームに戻る

Flask Blueprintの基礎

Blueprintとは?

Blueprintは、Flaskアプリケーションをモジュール化するための仕組みです。大規模なアプリケーションや、再利用可能なアプリケーションのコンポーネントを作成する際に役立ちます。Blueprintを使うことで、ルーティング、テンプレート、静的ファイルなどをまとめて管理し、後からアプリケーションに登録することができます。

Blueprintのメリット

コードの整理: アプリケーションを論理的なコンポーネントに分割し、管理しやすくします。

再利用性: 作成したBlueprintは、複数のアプリケーションで再利用できます。 大規模アプリケーションの管理: 多くの開発者が関わるような大規模なアプリケーションにおいて、各機能やモジュールを独立して開発できます。

Blueprintの基本的な構成要素

Blueprintインスタンスの作成:

Blueprintクラスのインスタンスを作成します。この際に、Blueprintの名前と、Blueprintが属するモジュールの名前を指定します。

ルーティングなどの定義:

Blueprintインスタンスに対して、@blueprint.route()などのデコレータを使ってルーティングやビュー関数を定義します。

Blueprintの登録: 作成したBlueprintインスタンスを、Flaskアプリケーションオブジェクトに登録します。


よく使うコマンド (Blueprintに関連するFlaskの操作)

Blueprint自体が直接的なコマンドを持つわけではありませんが、Flaskアプリケーションの実行や管理に関連するコマンドの中で、Blueprintを利用している場合に意識することがあります。

flask run: Flask開発サーバーを起動します。Blueprintで定義されたルーティングも有効になります。

(カスタムCLIコマンド): Flask CLI (Click) を利用して、Blueprint固有の管理コマンドを作成することも可能です。例えば、特定のBlueprintに関連するデータベース操作などを作成できます。


Blueprintの使用例

以下に、簡単なBlueprintの作成とアプリケーションへの登録例を示します。

Blueprintの作成 (users.py)

from flask import Blueprint, render_template

users_bp = Blueprint('users', __name__, url_prefix='/users')

@users_bp.route('/')
def list_users():
    users = ['Alice', 'Bob', 'Charlie']
    return render_template('users/list.html', users=users)

@users_bp.route('/<username>')
def show_user(username):
    return render_template('users/show.html', username=username)

この例では、users_bpという名前のBlueprintを作成し、URLプレフィックスを/users に設定しています。2つのルート (//<username>) をこのBlueprintに登録しています。また、テンプレートもBlueprint内のusersフォルダに配置することを想定しています。

テンプレートの作成 (templates/users/list.html)

<!DOCTYPE html>
<html>
<head>
    <title>Users</title>
</head>
<body>
    <h1>ユーザー一覧</h1>
    <ul>
        {% for user in users %}
        <li>{{ user }}</li>
        {% endfor %}
    </ul>
</body>
</html>

テンプレートの作成 (templates/users/show.html)

<!DOCTYPE html>
<html>
<head>
    <title>{{ username }}</title>
</head>
<body>
    <h1>ユーザー: {{ username }}</h1>
</body>
</html>

アプリケーションへのBlueprintの登録 (app.py)

from flask import Flask
from users import users_bp

app = Flask(__name__)
app.register_blueprint(users_bp)

@app.route('/')
def index():
    return "Hello from the main app!"

if __name__ == '__main__':
    app.run(debug=True)

このapp.pyでは、Flaskアプリケーションのインスタンスを作成し、先ほど作成したusers_bpregister_blueprint()メソッドを使って登録しています。

実行方法

users.py, app.pytemplates/users/list.html, templates/users/show.html を適切なディレクトリ構造で保存します。 ターミナルで app.py があるディレクトリに移動し、flask run を実行します。 ブラウザで http://127.0.0.1:5000/users/http://127.0.0.1:5000/users/Alice などにアクセスすると、Blueprintで定義されたページが表示されます。

この例を通して、Blueprintの基本的な使い方を理解していただけたかと思います。Blueprintを使うことで、アプリケーションの構造がより明確になり、保守性も向上します。