こんにちは,ちゆりです。
Flaskで大規模な開発を行っていると,用途ごとに.pyファイルをモジュール化し,分割して機能ごとにわかりやすくまとめたいですよね。

でも,Flaskでモジュール分割を行う場合,テンプレート情報などはどのように引き継いでいくのだろう。
今回はFlaskのpythonモジュールの分割方法,
その際のレンダリング方法について紹介していきます。
Blueprintの使い方
ざっと調べた感じ,Flaskを使う際のpythonのモジュール化はBlueprintモジュールを利用するのが簡単でしょう。
ということで,Blueprintモジュールを準備しましょう。
BlueprintモジュールはFlaskのパッケージに含まれているため追加でpipコマンドは必要ありません。(Flaskはもちろん必要ですが,この記事はFlask開発前提のお話ですから問題ないでしょう。)
from flask import Blueprint
でインポートできます。
ファイル構成
今回は例として以下のようなファイル構成で考えてみましょう。
work_folder
├ app.py
├ app_module.py
├ templates
│ ├ index.html
│ └ login.html
└ static
└ style.css
app.pyがメインで実行させるファイル,app_module.pyが分割したいモジュールファイルとします。
Blueprintモジュールの記述方法
app.pyそしてapp_module.pyは以下のようになります。
app.py
# Flaskのインポート
from flask import Flask
#他モジュール(.py)のインポート
from app_module import module_api #追加モジュール
app = Flask(__name__)
#他モジュール(.py)から呼び出す
app.register_blueprint(module_api)
#あとはレンダリング等の処理を記述
@app.route('/')
def login():
return "HELLO"
app_module.py
# Flaskのインポート,Blueprintのインポート
from flask import Flask, Blueprint
#Blueprintでモジュールの登録
module_api = Blueprint('app_module', __name__)
#レンダリング処理を記述
@module_api.route("/make")
def module_make():
return "Success"
Blueprintのレンダリング
上記のような記述で127.0.0.1:5000
にアクセスした際は,
127.0.0.1:5000
ではHELLOと出力
127.0.0.1:5000/make
ではSuccessと出力されます。
これでBlueprintモジュールにてpyファイルの分割が可能となりました。
url_prefixにてレンダリング
module_api = Blueprint('app_module', __name__, url_prefix='/add')
url_prefix='追加したいpath'
のオプションを追加することで レンダリングした際のパスを編集することが可能となります。
この場合は,127.0.0.1:5000/add/make
でSuccessの表示が可能となりました。url_prefixで走査パスの追加が可能です。
URL分割により機能の分割もわかりやすく記述することができますね。
Flaskについて学びたい方へ
書籍で学びたいなら
Flaskはサクッとシステムが作れて、割と幅広くなんでもできるので僕の好きなフレームワークです。
もっと学びたい方へ僕はこの本をおすすめします。Webアプリ開発全体の技術も同時に学べます。
オンライン授業で学びたいなら
僕はオンラインスクールはUdemy
今回はPython+Flaskの授業をおすすめします。Flaskの基礎から応用までこの授業で学べます
★FlaskでWebアプリを作るなら


コメント