深入瞭解Python Flask框架之藍圖
隨著Flask項目越來越復雜,把所有視圖函數放在一個應用文件中會很不方便我們管理,所以需要對程序進行模塊化的處理。Flask內置瞭一個模塊化處理的類——Blueprint藍圖。
Blueprint 是一種組織一組相關視圖及其他代碼的方式。與把視圖及其他代碼直接註冊到應用的方式不同,藍圖方式是把它們註冊到藍圖,然後在工廠函數中把藍圖註冊到應用。
簡單來說就把app應用分為很多個小模塊,把這些小模塊放在一個包裡,這個包叫做藍圖,如下圖所示:
項目目錄如下圖所示:
這裡創建瞭一個名為apps的包,我們這個包稱為藍圖,在這個包中,我們又創建瞭三個包,那麼我們如何把藍圖與app.py聯系起來呢。這時我們就要通過init.py初始化文件來把藍圖與app.py。
首先我們在user包中創建一個視圖函數文件名為view,代碼如下所示:
from flask import Blueprint user_bp= Blueprint('user',__name__)
首先導入Blueprint包,再通過Blueprint()方法來定義變量user_bp為藍圖對象。
init.py初始化文件代碼如下所示:
from flask import Flask from apps.user.view import user_bp def create_app(): app=Flask(__name__,template_folder='../templates',static_folder='../static') #藍圖 app.register_blueprint(user_bp) return app
首先我們導入user中的view對象user_bp,自定義函數create_app()並創建一個app對象,然後通過app.register_blueprint()方法將藍圖對象綁定在app對象上。
註意:由於init.py初始化文件與static靜態文件、templates模板文件不在同一級,所以需要重新指定靜態文件與模板文件的位置。
接下來編寫app.py啟動文件,代碼如下所示:
from flask import Flask from apps.user.view import user_bp def create_app(): app=Flask(__name__,template_folder='../templates',static_folder='../static') #藍圖 app.register_blueprint(user_bp) return app
代碼很簡單,直接導入view文件中的create_app並調用create_app()。
這樣app.py文件就和藍圖包聯系起來瞭。
註意:上面的文件名、藍圖名、視圖函數名都可以是任意的。
那麼我們藍圖的視圖函數有什麼變化呢?
以上面的view視圖函數文件為例,其代碼內容如下所示:
from flask import Blueprint, request, render_template, redirect from apps.user.model import User user_bp= Blueprint('user',__name__) #藍圖對象 @user_bp.route('/') def hello(): return '你好'
與之前的在app.py中寫視圖函數將比,將之前的@app.route()改為藍圖對象名.route(),其他的就幾乎一樣。
總結
本篇文章就到這裡瞭,希望能夠給你帶來幫助,也希望您能夠多多關註WalkonNet的更多內容!
推薦閱讀:
- python框架flask知識總結
- Python Flask 請求數據獲取響應詳解
- 詳解Python Flask框架的安裝及應用
- 一次python-flask藍圖的踩坑記錄
- Python from import導包ModuleNotFoundError No module named找不到模塊問題解決