藍圖Blueprint
阿新 • • 發佈:2018-09-28
src out .html () template span 視圖 int div
---恢復內容開始---
藍圖: flask模塊化處理操作和URL的方式
作用:
- 將不同的功能模塊化,實現模塊化應用
- 構建大型應用
- 優化項目結構
使用步驟
- 創建藍圖對象
- 對藍圖對象進行操作(註冊路由; 指定靜態文件夾; 註冊模板過濾器)
- 在應用對象上註冊藍圖對象
代碼操作
通過目錄式結構定義藍圖
1.簡單版
項目文件夾-模塊文件夾-模塊文件, __init__.py
from flask import Blueprint # 1.創建藍圖 goods_dp = Blueprint(‘goods‘, __name__) # 3.和views關聯起來,導入views.py 放在此處導入是延遲導入解決循環導入問題from .views import *
項目文件夾-模塊文件夾-模塊文件, views.py
from goods import goods_dp # 2.使用藍圖 @goods_dp.route(‘/goods/info‘) def goods(): """商品視圖函數""" return ‘goods‘
項目文件夾下項目文件demo1.py
from flask import Flask from goods import goods_dp app = Flask(__name__) # 4.註冊藍圖 app.register_blueprint(goods_dp)if __name__ == ‘__main__‘: print(app.url_map) app.run(debug=True)
2.加強版, 一般大致是以下這種
項目文件下templates文件夾, 按不同模塊建立不同文件夾, 如此處的goods文件夾; goods文件夾下建立HTML文件
goods.HTML裏面放入需要添加的內容, 演示只簡單操作如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1>商品模塊</h1> </body> </html>
1中的代碼做下面更改
- views.py做以下更改
導入模塊 from flask import render_template
返回語句return render_template("goods/goods.html")
from goods import goods_dp from flask import render_template # 2.使用藍圖 @goods_dp.route(‘/goods/info‘) def goods(): """商品視圖函數""" return render_template("goods/goods.html")
運行demo1文件後, 此時瀏覽器訪問127.0.0.1:5000/goods/info, 可以網頁顯示 商品模塊
- 上面views.py中的代碼繼續更改:
把路徑中的goods去掉放入__init__.py文件
from goods import goods_dp from flask import render_template # 2.使用藍圖 @goods_dp.route(‘/info‘) def goods(): """商品視圖函數""" return render_template("goods/goods.html")
- __init__.py文件更改
加入前綴url_profix, 在藍圖上註冊的路由URL自動被加上了這個前綴,這個可以保證在多個藍圖中使用相同的URL規則而不會最終引起沖突,只要在註冊藍圖時將不同的藍圖掛接到不同的自路徑即可
from flask import Blueprint # 1.創建藍圖 goods_dp = Blueprint(‘goods‘, __name__, url_prefix="/goods") # 3.和views關聯起來,導入views.py 放在此處導入是延遲導入解決循環導入問題 from .views import *
藍圖Blueprint