Blueprint とは
Flask における Blueprint とは、アプリケーションの機能を複数のファイル (モジュール) に分割する方法です。
ソースコードが長すぎる場合に、機能ごとにファイルを分割し管理しやすくするために利用します。
なお、Flask について順を追って学びたい場合は以下の記事をご覧ください
Blueprint の使い方
Blueprint は flask をインストールすることで利用可能です。
pip3 install flask
次に、Blueprint の使い方を説明するために、以下の2つを比較しながら紹介します。
分割前のアプリケーション
まずは分割前のアプリケーションを作成します。
vim app.py
from flask import Flask app = Flask(__name__) @app.route('/') def root(): return 'Hello world' @app.route('/hoge') def hoge(): return 'hoge' if __name__ == '__main__': app.run()
flask run
動作確認をします。
Hello world
hoge
分割後のアプリケーション
次に分割後のアプリケーションを作成します。
今回は先程の app.py にある2つの機能「@app.route('/')」と「@app.route('/hoge')」を、2つのモジュール (ファイル) に分割します。
vim app.py
from flask import Flask # app2.py にある bp 変数を import from app2 import bp app = Flask(__name__) # import した bp 変数(Blueprint オブジェクト)を登録 app.register_blueprint(bp) @app.route('/') def root(): return 'Hello world' if __name__ == '__main__': app.run()
vim app2.py
from flask import Blueprint
# Blueprint を作成
bp = Blueprint('app2', __name__)
# 先程 app.py にあった機能「@app.route('/hoge')」を app2.py に移動
@bp.route('/hoge')
def hoge():
return 'hoge'
classflask.Blueprint(name, import_name,....
・name (str) -- The name of the blueprint. Will be prepended to each endpoint name.・import_name (str) -- The name of the blueprint package, usually
https://msiz07-flask-docs-ja.readthedocs.io/ja/latest/api.html#blueprint-objects__name__
. This helps locate theroot_path
for the blueprint.
flask run
動作確認をします。
Hello world
hoge
2つのモジュール (ファイル) に分割して、先程と同様の結果を得ることができました。
参考サイト
Blueprintを使ったアプリケーションのモジュール化 — Flask Documentation (2.2.x)
はじめてのFlask導入〜Blueprint適用 - Qiita
タイトルのことをなるべく簡単に行ってみます。Blueprintを使用すると、アプリケーションの機能を分割して実装することができます。肥大化したプロジェクトを整理するための手段として、公式でもBl…