1. 程式人生 > >Flask 用Blueprint實現模組化的應用

Flask 用Blueprint實現模組化的應用

在一個大型專案中,肯定會有很多模組組成,比如一個網路管理系統可能有流量運營模組,實時分析模組,故障預警模組等。我們可以利用Flask Blueprint 實現每個模組的功能進行獨立的開發與管理,後面的實踐案例主要體現Buleprint以下功能
1. 可以獨立管理網頁的靜態檔案,如js,css,圖片等,即可以指定單純的靜態路徑,同時也可能指定模版的路徑。
2. 方便模組整合,無耦合。

案例工程結構:

>netmange   #工程資料夾
 app.py     #啟動入口
>netflow    #netflow 模組
 views.py   #netflow 路由
>assets #netflow 靜態檔案 >templates #netflow templates

第一個Blueprint案例 (netmange/netflow/views.py 的原始碼)

# -*- coding: utf-8 -*-
from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound

netflow_manager = Blueprint("netflow", __name__, static_folder="assets",template_folder='templates'
) #這是 app設定的方式:app = Flask(__name__, static_folder='', template_folder='') #這行設定這個專案的靜態根目錄和模版目錄,直接暴露assets資料夾為靜態 @netflow_manager.route("/show", methods=['GET']) def show(): return "show !"

啟動入口(netmange/app.py 的原始碼)

# -*- coding: utf-8 -*-
from flask import Flask
from netmange.netflow.views  import
netflow_manager app = Flask(__name__) app.register_blueprint(netflow_manager) @app.route("/", methods=["GET"]) def index(): return "index !" if __name__ == '__main__': app.run(debug=True, host='127.0.0.1', port=7888,threaded=True) #此處 threaded=True 為多執行緒啟動

啟動後,瀏覽器輸入http://127.0.0.1:7888/show 就可以看到show
!的顯示,為了驗證設定的靜態檔案路徑和模版路徑是否正確,可自行新增檔案在netmange/netflow/assets
和netmange/netflow/templates 裡面。