什么是藍(lán)圖?
藍(lán)圖:用于實(shí)現(xiàn)單個應(yīng)用的視圖、模板、靜態(tài)文件的集合。
藍(lán)圖就是模塊化處理的類。
簡單來說,藍(lán)圖就是一個存儲操作路由映射方法的容器,主要用來實(shí)現(xiàn)客戶端請求和URL相互關(guān)聯(lián)的功能。 在Flask中,使用藍(lán)圖可以幫助我們實(shí)現(xiàn)模塊化應(yīng)用的功能。
藍(lán)圖的運(yùn)行機(jī)制:
藍(lán)圖是保存了一組將來可以在應(yīng)用對象上執(zhí)行的操作。注冊路由就是一種操作,當(dāng)在程序?qū)嵗险{(diào)用route裝飾器注冊路由時,這個操作將修改對象的url_map路由映射列表。當(dāng)我們在藍(lán)圖對象上調(diào)用route裝飾器注冊路由時,它只是在內(nèi)部的一個延遲操作記錄列表defered_functions中添加了一個項(xiàng)。當(dāng)執(zhí)行應(yīng)用對象的 register_blueprint() 方法時,應(yīng)用對象從藍(lán)圖對象的 defered_functions 列表中取出每一項(xiàng),即調(diào)用應(yīng)用對象的 add_url_rule() 方法,這將會修改程序?qū)嵗穆酚捎成淞斜怼?/p>
藍(lán)圖的使用:
一、創(chuàng)建藍(lán)圖對象。
# Blueprint必須指定兩個參數(shù),admin表示藍(lán)圖的名稱,__name__表示藍(lán)圖所在模塊
admin = Blueprint('admin',__name__)
二、注冊藍(lán)圖路由。
@admin.route('/')
def admin_index():
return 'admin_index'
三、在程序?qū)嵗凶栽撍{(lán)圖。
#注冊藍(lán)圖,第一個參數(shù)admin是藍(lán)圖對象,url_prefix參數(shù)默認(rèn)值是根路由,如果指定,會在藍(lán)圖注冊的路由url中添加前綴。
app.register_blueprint(admin,url_prefix='/admin')
程序執(zhí)行文件/test4/test.py
from flask import Flask
#導(dǎo)入藍(lán)圖對象
from login import logins
from user import users
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
#注冊藍(lán)圖,第一個參數(shù)logins是藍(lán)圖對象,url_prefix參數(shù)默認(rèn)值是根路由,如果指定,會在藍(lán)圖注冊的路由url中添加前綴。
app.register_blueprint(logins,url_prefix='')
app.register_blueprint(users,url_prefix='')
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
創(chuàng)建藍(lán)圖:/test4/user.py
from flask import Blueprint,render_template
#創(chuàng)建藍(lán)圖,第一個參數(shù)指定了藍(lán)圖的名字。
users = Blueprint('user',__name__)
@users.route('/user')
def user():
return render_template('user.html')
創(chuàng)建藍(lán)圖:/test4/login.py
from flask import Blueprint,render_template
#創(chuàng)建藍(lán)圖
logins = Blueprint('login',__name__)
@logins.route('/login')
def login():
return render_template('login.html')