almost 4 years ago

Flask 的 tutorial 主程式只有一個檔案,有別於 Django 在 tutorial 中就教導我們套用一定的架構 (app),如下的 polls app

polls/
    __init__.py
    admin.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

在規模小的時候,一個檔案還可以管理,但是規模大一點就不適合這樣了,這時我們需要像上面一樣將 views 以及 models 獨立分開來。之前的 Hello World 範例變成下面這樣:

runserver.py
hello/
    __init__.py
    app.py
    views.py
hello/app.py
from flask import Flask

app = Flask(__name__)

from . import views
hello/views.py
from .app import app

@app.route("/")
def hello():
    return "Hello World!"

在 app.py 後面需要 import views 以便執行加入 route(),而 views.py 裡頭又需要 app ,這樣的 circular import 讓人感到不舒服(儘管無害),此時可以使用 blueprint 來消除。

hello/app.py
from flask import Flask

from .views import blueprint

app = Flask(__name__)
app.register_blueprint(blueprint)
hello/views.py
from flask import Blueprint

blueprint = Blueprint('hello', __name__)


@blueprint.route("/")
def hello():
    return "Hello World!"

當然 blueprint 的用途不僅僅是這樣,它的作用和 Django 的 app 類似,一個稍具規模的 web app 可能有多個 blueprints ,將功能分門別類,方便管理。

Further Reading

Explore Flask - Blueprints

← FLASK 簡介 - Hello World Effective Python 心得筆記 →
 
comments powered by Disqus