Flask - Blueprintを使って、ファイルを分けてアプリのルートを指定する方法

2019-04-03 22:38:54 1453

はじめに

Flaskアプリを書いていくと、
main.pyの中に全てのルートを記述していては中身が膨大になってきて、ファイル別にルートを指定してかき分けたくなる。
このサイトでも、ブログや、映画レビュー、pythonコードのリファレンスと作ってきた段階で、かなり煩雑なコードになってきた。

ここで、いろいろ調べてみるとBlueprintという機能がFlaskには備わっているらしい。

というわけで、使ってみた。

python_app.pyを作成する

まずは、小分けにして描きたいアプリのFlaskコードを記述するファイルを作成する。
ここでは、app/python_app.pyとする。

apps/python_app.py

# coding: utf-8 
from flask import Blueprint

python_app = Blueprint('python_app', __name__)
@python_app.route('/python_app')
def hello():
return 'hello'



次に、親アプリの設定を行う。
今回の場合、ディレクトリ直下のmain.pyとする。

main.py

from flask import Flask

#子アプリページのインポート
from apps.python_app import python_app

app = Flask(__name__)

# 子アプリのアドレス設定
app_set = [
python_app,
]
for app_name in app_set:
app.register_blueprint(app_name)
#↑複数の子アプリを今後持つことになる場合に備えてこういう書き方をしている。

ここで肝になるのが、app.register〜の部分。
python_app.pyで指定したpython_appを指定する。(同じ名前にしたからややこしいが、実際は全て統一した方がややこしくない。)
これで、/python_appにアクセスすることができるようになる。

参考にしたサイト

https://qiita.com/rarewin/items/8f252313db8ee7fa2de0
@shinyorke
2019-04-02 09:20:24
@maaya8585 DjangoだったらDDDでルーティング一箇所は楽勝っすね(そうできるように構成が取れてる)

Flaskはオレオレパッケージに分割してblueprintで数珠つなぎがパターンですね、あまりオススメはしないけ… https://t.co/wOiqA8yRPA

関連記事