Flask中的藍圖

原文:https://stackoverflow.com/questions/24420857/what-are-flask-blueprints-exactly

藍圖的漢語意思:
用感光後變成藍色或其他顏色的感光紙製成的圖紙。供工程設計施工或編繪地圖等用。(來自 http://cidian.xpcha.com/28d668gajnz.html
顯然,人們可以根據藍圖來建造大廈,橋樑等工程建築。

回到Flask框架中,藍圖是一種模板,程序可以依據其生成“一段”web應用。其本質等同於一個模板:
模板

開發者可以在應用的不同地方使用藍圖技術。每當你使用這個方法時,藍圖會依據應用的模板創建一個新的版本——–這就如同我們要做許多金屬工藝品(上圖右側的物品),可以先做出一個樣品的石膏模板,然後根據這個模板來澆築生成物品。

# An example
from flask import Blueprint

#生成一個藍圖,藍圖名爲mold
tree_mold = Blueprint("mold", __name__)mold

# 配置tree_mold的特定路由
def leaves():
@tree_mold.route("/leaves")              
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

這是一個簡單的樹的模板例子,任何應用可以訪問樹的葉子,根,年輪。其本身是一個模板,不可以處理路由,響應客戶端,除非註冊到一個flask應用上:

from tree_workshop import tree_mold
#註冊藍圖到app上,並設定特定的前綴
app.register_blueprint(tree_mold, url_prefix="/oak")    
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")   

可以應用register_blueprint方法將tree_mold藍本註冊到flask應用上。url_prefix設置特定的藍圖的路由。
例如我們想訪問tree_mold的葉子,可以通過hostname:port/ash/leaves 來訪問。

附錄:
1.完整代碼如下:
app.py

#app.py
from tree_mold  import tree_mold
from flask import Flask

from flask import Flask
app = Flask(__name__)


app.register_blueprint(tree_mold, url_prefix="/oak")
app.register_blueprint(tree_mold, url_prefix="/fir")
app.register_blueprint(tree_mold, url_prefix="/ash")


if __name__ == '__main__':
    app.run()

tree_mold.py

#tree_mold.py
from flask import Blueprint

tree_mold = Blueprint("mold", __name__)

@tree_mold.route("/leaves")
def leaves():
    return "This tree has leaves"

@tree_mold.route("/roots")
def roots():
    return "And roots as well"

@tree_mold.route("/rings")
@tree_mold.route("/rings/<int:year>")
def rings(year=None):
    return "Looking at the rings for {year}".format(year=year)

2.程序運行結果如下:
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章