【Flask】创建一个蓝图
生活随笔
收集整理的這篇文章主要介紹了
【Flask】创建一个蓝图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
藍圖
在一個Flask 應用項目中,如果業務視圖過多,可否將以某種方式劃分出的業務單元單獨維護,將每個單元用到的視圖、靜態文件、模板文件等獨立分開?
例如從業務角度上,可將整個應用劃分為用戶模塊單元、商品模塊單元、訂單模塊單元,如何分別開發這些不同單元,并最終整合到一個項目應用中?
一、藍圖介紹
在Flask中,使用藍圖Blueprint來分模塊組織管理。
藍圖實際可以理解為是一個存儲一組視圖方法的容器對象,其具有如下特點:
- 一個應用可以具有多個Blueprint
- 可以將一個Blueprint注冊到任何一個未使用的URL下比如 “/user”、“/goods”
- Blueprint可以單獨具有自己的模板、靜態文件或者其它的通用操作方法,它并不是必須要實現應用的視圖和函數的
- 在一個應用初始化時,就應該要注冊需要使用的Blueprint
二、使用步驟
1、單個文件的藍圖
使用藍圖可以分為三個步驟
特別注意1:在應用中注冊藍圖時使用url_prefix參數指定
2、獨立模塊的藍圖(用的最多)
特別注意2:創建藍圖的代碼,放到__init__文件中
創建藍圖代碼塊(__init__文件)
特別注意3:第六行代碼一定要寫from register.register import register
為什么呢?
執行項目python app.py,先執行app.py文件中第13行注冊藍圖,遇到名稱為register_bp的藍圖,隨后代碼去__init__文件中找到該藍圖第4行,但是操作藍圖的視圖加載不出來,所以程序會報錯。所以要在__init__文件中,創建完藍圖之后,導入藍圖視圖模塊
from flask import Flask,Blueprint#創建藍圖,對應的register目錄 register_bp=Blueprint('register',__name__)from register.register import register操作藍圖代碼塊(register.py)
from flask import Flask,Blueprint from register import register_bp#藍圖上操作,注冊路由 @register_bp.route('/') def register():return "注冊頁面"注冊藍圖代碼塊(app.py)
from flask import Flask from users import * from order.order_func import * from login import login_bp from register import register_bp app = Flask(__name__)#注冊藍圖 app.register_blueprint(user_bp,url_prefix='/users')#在應用對象上注冊藍圖 app.register_blueprint(register_bp,url_prefix='/register')@app.route('/') def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(debug=True)3、藍圖中的靜態資源和模板
和應用對象不同,藍圖對象創建時不會默認注冊靜態目錄的路由。需要我們在 創建時指定 static_folder 參數。
例如
案例:
創建藍圖代碼塊
from flask import Flask,Blueprint#創建藍圖,對應的register目錄 register_bp=Blueprint('register',__name__,static_folder='static',template_folder='templates')from register.register import register定義藍圖視圖代碼塊
from flask import Flask,Blueprint from register import register_bp#藍圖上操作,注冊路由 @register_bp.route('/') def register():return "注冊頁面"注冊藍圖代碼塊
from flask import Flask from users import * from order.order_func import * from login import login_bp #from register.register import register_bp from register import register_bpapp = Flask(__name__)#在應用對象上注冊藍圖 app.register_blueprint(login_bp,url_prefix='/login')#在應用對象上注冊藍圖 app.register_blueprint(register_bp,url_prefix='/register')@app.route('/') def hello_world():return 'Hello World!'if __name__ == '__main__':app.run(debug=True)啟動項目,訪問靜態文件
附目錄結構
總結
以上是生活随笔為你收集整理的【Flask】创建一个蓝图的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Flask】ORM的关联关系
- 下一篇: 【Flask】数据的CRUD之增加和查询