134
144

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2013-07-11

通常、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

こちらのほうが楽かも。

134
144
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
134
144

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?