1. 定義
Flask
用藍圖的概念來在一個應用中或跨應用制作應用組件和支持通用的模式。藍圖很好地簡化了大型應用工作的方式,并提供給 Flask
擴展在應用上注冊操作的核心方法。一個 Blueprint
對象與 Flask
應用對象的工作方式很像,但它確實不是一個應用,而是一個描述如何構建或擴展應用的藍圖。
2. 為什么使用藍圖
- 把一個應用分解為一個藍圖的集合。這對大型應用是理想的。一個項目可以實例化一個應用對象,初始化幾個擴展,并注冊一集合的藍圖。
- 以
URL
前綴和/或子域名,在應用上注冊一個藍圖。URL
前綴/子域名中的參數即成為這個藍圖下的所有視圖函數的共同的視圖參數(默認情況下)。 - 在一個應用中用不同的
URL
規則多次注冊一個藍圖。 - 通過藍圖提供模板過濾器、靜態文件、模板和其它功能。一個藍圖不一定要實現應用或者視圖函數。
- 初始化一個
Flask
擴展時,在這些情況中注冊一個藍圖
3. 實例
main.py
作為主程序,用來啟動Flask
程序
user
文件夾作為一個藍圖
views.py
from flask import Blueprint
# 第一個參數為藍圖的名稱,第二個參數為藍圖所在模塊
# __name__是一個系統變量,如果當前模塊是主模塊,那么__name__的值就是__main__。
# 如果當前模塊是被導入的,那么__name__的值就是模塊名字
# 具體可參考網址http://www.lxweimin.com/p/a6eed29c4204
user = Blueprint('user', __name__)
# 注冊藍圖的路由
@user.route('/index')
def hello():
return 'this is blueprint'
main.py
from flask import Flask
# 導入藍圖
from user.views import user
# 注冊Flask
app = Flask(__name__)
# 注冊藍圖,使用url_prefix參數可以給藍圖模塊添加一個共同的地址
app.register_blueprint(user, url_prefix='/user')
if __name__ == '__main__':
app.run()
運行 main.py
文件
運行
測試
地址欄輸入
http://127.0.0.1:5000/user/index
測試