通常、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
こちらのほうが楽かも。