Flask 用Blueprint實現模組化的應用
阿新 • • 發佈:2019-01-09
在一個大型專案中,肯定會有很多模組組成,比如一個網路管理系統可能有流量運營模組,實時分析模組,故障預警模組等。我們可以利用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 裡面。