創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買(mǎi)多久送多久,劃算不套路!
我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、沭陽(yáng)ssl等。為1000+企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的沭陽(yáng)網(wǎng)站制作公司這篇文章將為大家詳細(xì)講解有關(guān)flask藍(lán)圖指的是什么,小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,希望大家閱讀完這篇文章后可以有所收獲。
Blueprint概念
簡(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)模塊化,在Flask中,Blueprint具有如下屬性:
一個(gè)應(yīng)用可以具有多個(gè)Blueprint可以將一個(gè)Blueprint注冊(cè)到任何一個(gè)未使用的URL下比如 “/”、“/sample”或者子域名在一個(gè)應(yīng)用中,一個(gè)模塊可以注冊(cè)多次Blueprint可以單獨(dú)具有自己的模板、靜態(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)用中。
初識(shí)藍(lán)圖
藍(lán)圖/Blueprint對(duì)象用起來(lái)和一個(gè)應(yīng)用/Flask對(duì)象差不多,大的區(qū)別在于一個(gè) 藍(lán)圖對(duì)象沒(méi)有辦法獨(dú)立運(yùn)行,必須將它注冊(cè)到一個(gè)應(yīng)用對(duì)象上才能生效
使用藍(lán)圖可以分為三個(gè)步驟
from flask import Blueprint
1,創(chuàng)建一個(gè)藍(lán)圖對(duì)象admin=Blueprint('admin',__name__)
2,在這個(gè)藍(lán)圖對(duì)象上進(jìn)行操作,注冊(cè)路由,指定靜態(tài)文件夾,注冊(cè)模版過(guò)濾器
@admin.route('/')def admin_home(): return 'admin_home'
3,在應(yīng)用對(duì)象上注冊(cè)這個(gè)藍(lán)圖對(duì)象app.register_blueprint(admin,url\_prefix='/admin')
當(dāng)這個(gè)應(yīng)用啟動(dòng)后,通過(guò)/admin/可以訪問(wèn)到藍(lán)圖中定義的視圖函數(shù)
運(yùn)行機(jī)制
藍(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ì)象的路由表
藍(lán)圖的url前綴
當(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)圖掛接到不同的自路徑即可
url_for url_for('admin.index') # /admin/
注冊(cè)靜態(tài)路由
和應(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')
關(guān)于flask藍(lán)圖指的是什么就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到。