為什么要使用藍(lán)圖
使應(yīng)用模塊化。
提高代碼的內(nèi)聚性,降低代碼的耦合性。
如何在flask中創(chuàng)建藍(lán)圖
在工作目錄中右擊創(chuàng)建Python packages包,創(chuàng)建出對應(yīng)功能模塊的包,其中會自動生成init模塊,在init中創(chuàng)建BluePrint藍(lán)圖。
在init模塊中導(dǎo)入對應(yīng)的模塊
創(chuàng)建藍(lán)圖對象
將路由注冊到藍(lán)圖,建立藍(lán)圖和視圖的聯(lián)系
將藍(lán)圖注冊到app
以創(chuàng)建用戶信息users和訂單orders為例
users/init.py模塊中
# coding=utf-8
# 導(dǎo)入Blueprint模塊
from flask import Blueprint
# 創(chuàng)建藍(lán)圖對象 ? ?? 參數(shù) 1.藍(lán)圖名稱 ? ? ? ? ? 2.訪問路由前綴
user_blue = Blueprint("users", __name__, url_prefix="/users")
# 導(dǎo)入視圖函數(shù)
from . import view
orders/init.py模塊中
# coding=utf-8
from flask import Blueprint
?
order_blue = Blueprint("order111", __name__, url_prefix="/orders")
?
from . import view
users/view.py模塊中
# coding=utf-8
# 從users包中導(dǎo)入藍(lán)圖對象
from users import user_blue
# 將路由注冊到藍(lán)圖,建立路由與視圖函數(shù)的關(guān)系
@user_blue.route("/info")
def info():
?? return "info page"
?
@user_blue.route("/login")
def login1():
?? return "login page"
manage.py模塊中
# coding=utf-8
from flask import Flask
# 導(dǎo)入藍(lán)圖對象
from users import user_blue
from orders import order_blue
?
app = Flask(__name__)
?
# 將藍(lán)圖注冊到app
app.register_blueprint(user_blue)
app.register_blueprint(order_blue)
if __name__ == '__main__':
?? print(app.url_map)
?? app.run()
最終輸出的url_map映射結(jié)果為:
Map([ order111.order1>,
users.login1>,
users.info>,
' (HEAD, OPTIONS, GET) -> static>])