1. 程式人生 > >藍圖Blueprint

藍圖Blueprint

src out .html () template span 視圖 int div

---恢復內容開始---

藍圖: flask模塊化處理操作和URL的方式

作用:

  1. 將不同的功能模塊化,實現模塊化應用
  2. 構建大型應用
  3. 優化項目結構

使用步驟

  1. 創建藍圖對象
  2. 對藍圖對象進行操作(註冊路由; 指定靜態文件夾; 註冊模板過濾器)
  3. 在應用對象上註冊藍圖對象

代碼操作

通過目錄式結構定義藍圖

技術分享圖片

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