Edited at

Flaskで大きいアプリケーションを作るときのTips

More than 1 year has passed since last update.

通常、Flaskでは


flask.py

from flask import Flask

app = Flask(__file__)


こうやってアプリケーションを定義するが、 MVT で作りたいという場合は、


blueprint.py

from flask import Blueprint

app = Blueprint("app", __name__, url_prefix="/path")


このようにアプリケーションを定義する。

たとえば、

.

├── app.py
├── model.py
├── static
│   ├── interface.js
│   └── layout.css
├── template
│   ├── design.html
│   └── main.html
└── view
├── __init__.py
├── api.py
├── auth.py
├── main.py
└── setting.py

このようなファイル構造の場合。

view/以下の各Pythonスクリプトには Blueprintでアプリケーションを定義する。


api.py

from flask import Blueprint

app = Blueprint("api", __name__, url_prefix="/api")


app.py には view/以下の各PythonスクリプトのBlueprintを登録する必要がる。


app.py

from flask import Flask

from view import api, auth, main, setting

application = Flask(__name__)

modules_define = [api.app, auth.app, main.app, setting.app]
for app in modules_define:
application.register_blueprint(app)


まず view/ ディレクトリ以下の各Pythonスクリプトをimportする。

from view import api, auth, main, setting

次に Blueprintアプリケーションを登録する

application.register_blueprint(app)

これでMVTができる。


ちなみに

ちなみに、app.py に直接 view/ 以下のBlueprintアプリケーションを登録するのではなく、 view/ 以下の __init__.py にBlueprintアプリケーションを登録して、それを app.py でimportする、という方法もある。


__init__.py

from flask import Flask

import api, auth, main, setting

application = Flask(__name__)

modules_define = [api.app, auth.app, main.app, setting.app]
for app in modules_define:
application.register_blueprint(app)



app.py


from view import application

こちらのほうが楽かも。