[Python] FlaskアプリケーションでBlueprintを用いてコントローラーを分割する
こんにちは、@yoheiMuneです。
今日は、[Python] 軽量WebフレームワークのFlaskに入門(準備、起動、HTML、静的ファイル、GET、POSTなど)の続きで、FlaskでControllerを分割する方法をブログに書きたいと思います。
今回は以下のようなファイル構成として話を進めます。
http://flask.pocoo.org/docs/0.10/blueprints/
最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!
今日は、[Python] 軽量WebフレームワークのFlaskに入門(準備、起動、HTML、静的ファイル、GET、POSTなど)の続きで、FlaskでControllerを分割する方法をブログに書きたいと思います。
目次
Blueprintを用いてコントローラーを複数のファイルに分割する
Webアプリケーションが大きくなってくると、リクエストを受け取るコントローラー処理が肥大化してきます。app.pyなどの1ファイルでサーバー起動が気軽にできるFlaskですが、Blueprintを用いることで、コントローラーの処理を分割することができます。今回は以下のようなファイル構成として話を進めます。
- app.py
- controllers
- action.py
コントローラーを分割する
それではここでは、controllers/action.pyに、分割したコントローラーを記載します。Blueprintを使って以下のように実装します。
# controllers/action.py
# Blueprintをimportする
from flask import Blueprint
# "action"という名前でBlueprintオブジェクトを生成します
app = Blueprint('action', __name__)
# ルーティング処理を書きます
@app.route("/api/v1/action/hello")
def hello():
return "Hello from action.py"
これで、分割したコントローラーの実装は終わりです。簡単ですね♪分割したコントローラーを呼び出す
それでは、上記で作成したcontrollers/action.pyのコントローラーをapp.pyから呼び出してみましょう。以下のように実装します。
# app.py
from flask import Flask
# 分割先のコードをインポートする
from controllers import action
app = Flask(__name__)
# 分割先のコントローラー(Blueprint)を登録する
app.register_blueprint(action.app)
# 起動する
if __name__ == "__main__":
app.run()
これで、controllers/action.pyで定義したルーティングが利用できるようになりました。こちらも簡単にできますね!参考資料
FlaskのBlueprintは、以下がリファレンスとなります。このブログで紹介した以外にも、urlプレフィックスの指定やtemplateフォルダの指定などいろいろと機能があります。http://flask.pocoo.org/docs/0.10/blueprints/
最後に
今日はFlaskのBlueprintについてブログを書きました。Flaskはライトに実装できるけど、欲しい機能はちゃんとあっていろいろと便利ですね。今後も使い倒していき、たくさんブログを書きたいと思います。最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSやTwitterをフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!






