[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をフォローして頂けると幸いです ^ ^。
最後までご覧頂きましてありがとうございました!