Flask 藍(lán)圖資源

2021-08-10 18:01 更新

藍(lán)圖也可以提供資源。有時候你會只為它提供的資源而引入一個藍(lán)圖。

藍(lán)圖資源文件夾

像常規(guī)的應(yīng)用一樣,藍(lán)圖被設(shè)想為包含在一個文件夾中。當(dāng)多個藍(lán)圖源于同一個文件 夾時,可以不必考慮上述情況,但也這通常不是推薦的做法。

這個文件夾會從 Blueprint 的第二個參數(shù)中推斷出來,通常是 __name__ 。 這個參數(shù)決定對應(yīng)藍(lán)圖的是哪個邏輯的 Python 模塊或包。如果它指向一個存在的 Python 包,這個包(通常是文件系統(tǒng)中的文件夾)就是資源文件夾。如果是一個模塊, 模塊所在的包就是資源文件夾。你可以訪問 Blueprint.root_path 屬性來查看 資源文件夾是什么:

>>> simple_page.root_path
'/Users/username/TestProject/yourapplication'

可以使用 open_resource() 函數(shù)來快速從這個文件夾打開源文件:

with simple_page.open_resource('static/style.css') as f:
    code = f.read()

靜態(tài)文件

一個藍(lán)圖可以通過 static_folder 關(guān)鍵字參數(shù)提供一個指向文件系統(tǒng)上文件夾的路 徑,來暴露一個帶有靜態(tài)文件的文件夾。這可以是一個絕對路徑,也可以是相對于藍(lán)圖 文件夾的路徑:

admin = Blueprint('admin', __name__, static_folder='static')

默認(rèn)情況下,路徑最右邊的部分就是它在 web 上所暴露的地址。因?yàn)檫@里這個文件夾 叫做 static ,它會在 藍(lán)圖 + /static 的位置上可用。也就是說,藍(lán)圖為 /admin 把靜態(tài)文件夾注冊到 /admin/static 。

最后是命名的 blueprint_name.static ,這樣你可以生成它的 URL ,就像你對應(yīng)用 的靜態(tài)文件夾所做的那樣:

url_for('admin.static', filename='style.css')

模板

如果你想要藍(lán)圖暴露模板,你可以提供 Blueprint 構(gòu)造函數(shù)中的 template_folder 參數(shù)來實(shí)現(xiàn):

admin = Blueprint('admin', __name__, template_folder='templates')

像對待靜態(tài)文件一樣,路徑可以是絕對的或是相對藍(lán)圖資源文件夾的。模板文件夾會 被加入到模板的搜索路徑中,但是比實(shí)際的應(yīng)用模板文件夾優(yōu)先級低。這樣,你可以 容易地在實(shí)際的應(yīng)用中覆蓋藍(lán)圖提供的模板。

那么當(dāng)你有一個 yourapplication/admin 文件夾中的藍(lán)圖并且你想要渲染 'admin/index.html' 模板,且你已經(jīng)提供了 templates 作為 template_folder ,你需要這樣創(chuàng)建文件: yourapplication/admin/templates/admin/index.html

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號