藍圖這個名字好像就是根據單詞Blueprint字面意思來,跟日常咱們理解的藍圖徹底掛不上鉤,這裏藍圖就是指Blueprint。flask
使用藍圖的好處是能夠將不一樣功能做用的視圖函數/類視圖放到不一樣的模塊中,能夠更加方便的開發和維護app
- 導入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是不能有子域名的