Help us understand the problem. What is going on with this article?

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

More than 3 years have 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

こちらのほうが楽かも。

Alice1017
元Python書き・現JS書き
http://github.com/alice1017
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away