2016/05/20更新

[Python] FlaskアプリケーションでBlueprintを用いてコントローラーを分割する

このエントリーをはてなブックマークに追加      

こんにちは、@yoheiMuneです。
今日は、[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の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。