Flask初學者:藍圖Blueprint
阿新 • • 發佈:2018-11-13
藍圖這個名字好像就是根據單詞Blueprint字面意思來,跟平常我們理解的藍圖完全掛不上鉤,這裡藍圖就是指Blueprint。
使用藍圖的好處是可以將不同功能作用的檢視函式/類檢視放到不同的模組中,可以更加方便的開發和維護
- 匯入Blueprint:from flask import Blueprint
- 建立一個藍圖:例如user_bp = Blueprint(‘user’, __name__, prefix=’/user’),第一引數指定藍圖名稱,第二個引數與flask中的使用是相同的(用於指定靜態檔案的相對路徑,也方便其他三方外掛報錯時定位問題),第三個引數prefix為這個藍圖指定url字首,這個字首會和檢視函式/類檢視指定的url直接連線起來形成一個有效的url
- 檢視函式:也是和Flask的使用一樣,使用對應的route裝飾器即可
- 註冊藍圖:使用方法app.register_blueprint(user_bp)即可
- HTML模板查詢規則:如果建立藍圖時,第二個引數使用的是__name__,那麼預設的模板檔案路徑就是專案根目錄下的templates資料夾(Flask例項化時的__name__),如果不想使用這個templates資料夾,可以在例項化Blueprint時指定template_folder引數,那麼此時模板檔案的查詢順序就是先在templates資料夾中查詢,查詢不到時,就會在藍圖檔案同級目下template_folder引數指定的資料夾(Blueprint例項化時的__name__)中查詢
- 靜態檔案查詢規則:如果建立藍圖時,如果第二個引數使用的是__name__,那麼,在使用url_for(‘static’, filename=xxx)時,就只會在專案根目錄的static資料夾中查詢,如果使用url_for(‘user.static’, filename=xxx)就會在藍圖建立時static_folder引數指定的資料夾中查詢
- url_for反轉:反轉獲取藍圖中的url時,必須加上藍圖名稱的字首,即便是就在該藍圖模組中使用url_for,也要加上藍圖的名稱,例如url_for(‘blue_name.viewfunc_name’)
- 子域名:在建立藍圖的時候可以使用subdomain引數指定子域名,需要注意的是具體的IP地址和localhost是不能有子域名的