Flaskのblueprintオブジェクトを用いて、前回作成した__init__.pyの商品情報のコードを整理します。
1 2 3 4 5 6 7 8 |
web └── items.py (1)・・・ 新規追加 └── __init__.py (2)・・・ 変更 └── templates | └── base.html | └── index.html └── static └── style.css |
(1) items.py
__init__.pyの商品情報の箇所を、items.pyに移動します。
1行目にblueprintクラスとrender_templateメソッドを追加します。
5行目にblueprintオブジェクトを作成します。パラメータの「’items’」はitems.pyを指し、「__name__」は__init__.pyのcreate_appに渡します。
尚、blueprintについて、アプリケーションの機能を分割して実装するためのものです。また、アプリケーションの構造化に役立ちます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
from flask import ( Blueprint, render_template ) bp = Blueprint('items', __name__) @bp.route('/') def index(): return render_template('index.html', items=get_testdata()) def get_testdata(): return [ {'id':1, 'item_name':'キャベツ', 'price':200}, {'id':2, 'item_name':'にんじん', 'price':100}, {'id':3, 'item_name':'牛乳', 'price':178}, {'id':4, 'item_name':'もやし', 'price':50}, {'id':5, 'item_name':'はくさい', 'price':128}, ] |
(2) __init__.py
(1)に商品情報を移動させたため、関連の箇所を削除します。
そして、blueprintを用いて__init__.pyからitems.pyが利用できるようにitemsをインポートし、blueprintを登録します。
6行目の「.」は同じフォルダ内であることを示し、「items」はitems.pyを指します。
7行目の「items.bp」はitems.pyで作成したオブジェクトbpを指します。
1 2 3 4 5 6 7 8 9 |
from flask import Flask def create_app(): app = Flask(__name__) from . import items app.register_blueprint(items.bp) return app |
・実行結果
以上です。