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