Flask組件化開發:Blueprint(藍)
我們在管理路由的時候,是直接在app對象上進行的路由設置的,像下面這樣:
顯然,如果所有的路由都直接在app應用對象上直接註冊,不僅使我們的程序結構十分混亂,而且大大增加了程序的系統內存消耗。至於如何節約,先賣個關子。
那麽使用藍圖進行程序路由的模塊化管理是如何做到的呢?
可以看到在 app 文件夾下有三個文件夾 main 、 auth 以及 api 內含有視圖函數。如果不太清楚flask項目結構的,可以轉 Flask項目結構
這三個文件夾中的 init .py都是進行藍圖的定義的。舉 main 文件夾下的例子
在應用對象app上 註冊 藍圖對象。
第壹個參數是 藍圖對象
隨後的都是 可選參數
1.static_folder :
和應用對象不同,藍圖對象創建時不會默認註冊靜態目錄的路由。需要我們在 創建時指定static_folder 參數。如圖中我們設置參數為 ‘static’ ,也就是項目結構中的 static 文件夾。
這樣我們可以使用地址 /static/main/layout.css 訪問static目錄下的css、js、image文件了
2.url_prefix
默認的值為 '/' ######用壹個demo.py來解釋吧( 這個demo也要在虛擬環境下運行 )
顯而易見,這個參數就是增加相對路徑的前綴的
當然也可以不用直接在渲染成模板時自己加上。
中間穿插了這麽多,再看壹下main/views.py裏邊的內容吧
這個例子就是直接在views.py裏邊直接加url前綴。
這個文件下就是在藍圖對象上進行操作即創建路由 ,通過 render_template() 方法將頁面渲染出來。
我壹般習慣將前邊所有的工作做完之後再去前端HTML文件中去設置路由的跳轉。例如:
url_for是通過endpoint查詢url地址,然後找視圖函數
根據個人的理解來說壹下藍圖的運行機制: