摘要:注冊靜態(tài)路由和應(yīng)用對象不同,藍圖對象創(chuàng)建時不會默認注冊靜態(tài)目錄的路由。
首選:flask藍圖是什么?
flask運行web程序的運行是通過實例化對象app.run()來運行的,那么會出現(xiàn)在一個.py文件里面定義很多的視圖函數(shù),即不方便代碼管理,又不利于后期的維護.所以在flask出現(xiàn)了藍圖(Blueprint),可以使程序模塊化,就像django的一個個模塊一樣來獨立編程。那么這個藍圖(Blueprint)就實現(xiàn)了這個功能。
簡單來說,Blueprint 是一個存儲操作方法的容器,這些操作在這個Blueprint 被注冊到一個應(yīng)用之后就可以被調(diào)用,F(xiàn)lask 可以通過Blueprint來組織URL以及處理請求。Flask使用Blueprint讓應(yīng)用實現(xiàn)模塊化。
一個應(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)用中。
藍圖是保存了一組將來可以在應(yīng)用對象上執(zhí)行的操作,注冊路由就是一種操作
當在應(yīng)用對象上調(diào)用 route 裝飾器注冊路由時,這個操作將修改對象的url_map路由表
然而,藍圖對象根本沒有路由表,當我們在藍圖對象上調(diào)用route裝飾器注冊路由時,它只是在內(nèi)部的一個延遲操作記錄列表defered_functions中添加了一個項
當執(zhí)行應(yīng)用對象的 register_blueprint() 方法時,應(yīng)用對象將從藍圖對象的 defered_functions 列表中取出每一項,并以自身作為參數(shù)執(zhí)行該匿名函數(shù),即調(diào)用應(yīng)用對象的 add_url_rule() 方法,這將真正的修改應(yīng)用對象的路由表。
當我們在應(yīng)用對象上注冊一個藍圖時,可以指定一個url_prefix關(guān)鍵字參數(shù)(這個參數(shù)默認是/)
在應(yīng)用最終的路由表 url_map中,在藍圖上注冊的路由URL自動被加上了這個前綴,這個可以保證在多個藍圖中使用相同的URL規(guī)則而不會最終引起沖突,只要在注冊藍圖時將不同的藍圖掛接到不同的自路徑即可。
和應(yīng)用對象不同,藍圖對象創(chuàng)建時不會默認注冊靜態(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è)置模版目錄
藍圖對象默認的模板目錄為系統(tǒng)的模版目錄,可以在創(chuàng)建藍圖對象時使用 template_folder 關(guān)鍵字參數(shù)設(shè)置模板目錄
admin = Blueprint("admin",__name__,template_folder="my_templates")
注:如果在templates中存在和my_templates同名文件,則系統(tǒng)會優(yōu)先使用templates中的文件,在使用templates目錄同名的情況下,需要通過路徑區(qū)分,例如:
my_templates存在兩個,若使用admin目錄下的my_templates目錄,則需要使用如下方式注冊:
admin = Blueprint("admin",__name__,template_folder="admin/my_templates")
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42536.html
摘要:藍圖的簡單介紹藍圖概念的簡單介紹用藍圖的概念來在一個應(yīng)用中或跨應(yīng)用制作應(yīng)用組件和支持通的模式。以前綴和或子域名,在應(yīng)用上注冊一個藍圖。前綴子域名中的參數(shù)即成為這個藍圖下的所有視圖函數(shù)的共同的視圖參數(shù)默認情況下。 flask藍圖的簡單介紹 藍圖概念的簡單介紹:Flask 用 藍圖(blueprints) 的概念來在一個應(yīng)用中或跨應(yīng)用制作應(yīng)用組件和支持通的模式。藍圖很好地簡化了大型應(yīng)用工作...
摘要:月份發(fā)布了第版,收到不少網(wǎng)友的良好建議,所以又抽空進行了完善,當然也拖了不少時間。本書主要介紹的基本使用,這也是我一開始在學(xué)習(xí)過程中經(jīng)常用到的。第章實戰(zhàn),介紹了如何開發(fā)一個簡單的應(yīng)用。聲明本書由編寫,采用協(xié)議發(fā)布。 showImg(https://segmentfault.com/img/remote/1460000007484050?w=200&h=152); 書籍地址 head-f...
摘要:使用藍圖的概念來制作應(yīng)用程序組件和支持應(yīng)用程序內(nèi)部或跨應(yīng)用程序的通用模式。藍圖可以大大簡化大型應(yīng)用程序的工作方式,并為擴展提供了在應(yīng)用程序上注冊操作的中心手段。相反,它是如何構(gòu)造或擴展應(yīng)用程序的藍圖。 藍圖 之前我們已經(jīng)通過代碼了解了一些Flask基本的用法,現(xiàn)在出現(xiàn)一個問題,我們要做的功能越來越多,路由是不是都要放在run文件中呢?例如我們在不同的文件都定義了一些路由,如果想要訪問他...
閱讀 1664·2019-08-30 13:04
閱讀 2217·2019-08-30 12:59
閱讀 1777·2019-08-29 18:34
閱讀 1874·2019-08-29 17:31
閱讀 1266·2019-08-29 15:42
閱讀 3545·2019-08-29 15:37
閱讀 2866·2019-08-29 13:45
閱讀 2780·2019-08-26 13:57