創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
這篇文章將為大家詳細(xì)講解有關(guān)flask藍圖指的是什么,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
Blueprint概念
簡單來說,Blueprint 是一個存儲操作方法的容器,這些操作在這個Blueprint 被注冊到一個應(yīng)用之后就可以被調(diào)用,F(xiàn)lask 可以通過Blueprint來組織URL以及處理請求。
Flask使用Blueprint讓應(yīng)用實現(xiàn)模塊化,在Flask中,Blueprint具有如下屬性:
一個應(yīng)用可以具有多個Blueprint可以將一個Blueprint注冊到任何一個未使用的URL下比如 “/”、“/sample”或者子域名在一個應(yīng)用中,一個模塊可以注冊多次Blueprint可以單獨具有自己的模板、靜態(tài)文件或者其它的通用操作方法,它并不是必須要實現(xiàn)應(yīng)用的視圖和函數(shù)的在一個應(yīng)用初始化時,就應(yīng)該要注冊需要使用的Blueprint
但是一個Blueprint并不是一個完整的應(yīng)用,它不能獨立于應(yīng)用運行,而必須要注冊到某一個應(yīng)用中。
初識藍圖
藍圖/Blueprint對象用起來和一個應(yīng)用/Flask對象差不多,大的區(qū)別在于一個 藍圖對象沒有辦法獨立運行,必須將它注冊到一個應(yīng)用對象上才能生效
使用藍圖可以分為三個步驟
from flask import Blueprint
1,創(chuàng)建一個藍圖對象admin=Blueprint('admin',__name__)
2,在這個藍圖對象上進行操作,注冊路由,指定靜態(tài)文件夾,注冊模版過濾器
@admin.route('/')def admin_home(): return 'admin_home'
3,在應(yīng)用對象上注冊這個藍圖對象app.register_blueprint(admin,url\_prefix='/admin')
當(dāng)這個應(yīng)用啟動后,通過/admin/可以訪問到藍圖中定義的視圖函數(shù)
運行機制
藍圖是保存了一組將來可以在應(yīng)用對象上執(zhí)行的操作,注冊路由就是一種操作當(dāng)在應(yīng)用對象上調(diào)用 route 裝飾器注冊路由時,這個操作將修改對象的url_map路由表然而,藍圖對象根本沒有路由表,當(dāng)我們在藍圖對象上調(diào)用route裝飾器注冊路由時,它只是在內(nèi)部的一個延遲操作記錄列表defered_functions中添加了一個項當(dāng)執(zhí)行應(yīng)用對象的 register_blueprint() 方法時,應(yīng)用對象將從藍圖對象的 defered_functions 列表中取出每一項,并以自身作為參數(shù)執(zhí)行該匿名函數(shù),即調(diào)用應(yīng)用對象的 add_url_rule() 方法,這將真正的修改應(yīng)用對象的路由表
藍圖的url前綴
當(dāng)我們在應(yīng)用對象上注冊一個藍圖時,可以指定一個url_prefix關(guān)鍵字參數(shù)(這個參數(shù)默認(rèn)是/)
在應(yīng)用最終的路由表 url_map中,在藍圖上注冊的路由URL自動被加上了這個前綴,這個可以保證在多個藍圖中使用相同的URL規(guī)則而不會最終引起沖突,只要在注冊藍圖時將不同的藍圖掛接到不同的自路徑即可
url_for url_for('admin.index') # /admin/
注冊靜態(tài)路由
和應(yīng)用對象不同,藍圖對象創(chuàng)建時不會默認(rèn)注冊靜態(tài)目錄的路由。需要我們在 創(chuàng)建時指定 static_folder 參數(shù)。
下面的示例將藍圖所在目錄下的static_admin目錄設(shè)置為靜態(tài)目錄
admin = Blueprint("admin",__name__,static_folder='static_admin') app.register_blueprint(admin,url_prefix='/admin')
現(xiàn)在就可以使用/admin/static_admin/ 訪問static_admin目錄下的靜態(tài)文件了 定制靜態(tài)目錄URL規(guī)則 :可以在創(chuàng)建藍圖對象時使用 static_url_path 來改變靜態(tài)目錄的路由。下面的示例將為 static_admin 文件夾的路由設(shè)置為 /lib
admin = Blueprint("admin",__name__,static_folder='static_admin',static_url_path='/lib') app.register_blueprint(admin,url_prefix='/admin')
設(shè)置模版目錄
藍圖對象默認(rèn)的模板目錄為系統(tǒng)的模版目錄,可以在創(chuàng)建藍圖對象時使用 template_folder 關(guān)鍵字參數(shù)設(shè)置模板目錄
admin = Blueprint('admin',__name__,template_folder='my_templates')
關(guān)于flask藍圖指的是什么就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
文章題目:flask藍圖指的是什么-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://jinyejixie.com/article12/disodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、服務(wù)器托管、App開發(fā)、搜索引擎優(yōu)化、手機網(wǎng)站建設(shè)、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容