■Blueprintが使ってみたい
Flask公式のチュートリアルではBlueprintが使われていたが
開発環境での例だったので、今回は自作の本番環境で
Blueprintが使いたいと思った
DBと連携するための下準備でもある
まさしくBluprint
・__init__.pyは変わらず使う
・Blueprintとなるファイルはviews.py
・initとviewsは同じフォルダに配置
(viewsを1つ下のフォルダに置く方法ができなかった...)
__init__.py
from flask import Flask app = Flask(__name__) from . import views app.register_blueprint(views.bp) if __name__ == "__main__": app.run()
views.py
from flask import render_template, Blueprint bp = Blueprint('bp', __name__) @bp.route("/") def index(): return render_template('index.html')
すごい簡潔にやるとこんな感じ
例えばlogin、logoutの処理を定義するときに
redirect(url_for())を使う場合は、引数に渡すメソッド名に注意が必要
@bp.route("/logout/") def logout(): session.clear() return redirect(url_for('bp.index'))
またtemplatesフォルダ配下のhtmlファイルも同様
<h1>Top Page</h1> <h2><a href="{{ url_for('bp.index') }}">Top</a></h2> <h2><a href="{{ url_for('bp.logout') }}">Logout</a></h2>
initiファイルでやってたときは'index'として渡せばよかったけど
Bluprint使うとなると'bp.index'として渡す必要がある
デバッグ使いながらなんとかBlueprintを使った環境が完成
次はようやくDBとの連携に移れる