一、場景
在進行flask開發的時候,需要按照不同的封裝對象進行開發。比如我們在開發電影網站,可以按照電影的url,用戶的url,評論的url來進行開發,避免了將整個url都放入一個文件中,此時我們就需要使用到flask中的藍圖。
二、使用
使用藍圖按照以下的順序:
創建藍圖-->在flask的APP中引入藍圖-->註冊藍圖
我們將創建一個main_func1、other、user的藍圖,並在flask_init文件中註冊這些藍圖。
文件結構如下:
模型分管示意圖
2.1 創建藍圖
創建藍圖就是創建一個文件,然後給他註冊好名字,隨後引入。
main_func.py文件
# 引入Blueprint包
from flask import Blueprint
# 創建藍圖,名字叫做main_fun
main_fun1 = Blueprint("main_fun", __name__)
# 創建該藍圖下的路由
@main_fun1.route("/home")
def x1():
data = {
"main_fun": "java",
}
return data
other.py文件
from flask import Blueprint other = Blueprint("other", __name__) @other.route("/home") def x1(): data = { "other": "other", } return data
user.py文件
from flask import Blueprint user = Blueprint("user", __name__) @user.route("/home") def x1(): data = { "user": "user", } return data
2.2 創建app與註冊藍圖
在flask_init.py文件中創建APP,並註冊藍圖
from flask import Flask
# 引入藍圖
from .main_func import main_fun1
from .other import other
from .user import user
# 創建flask對象
app = Flask(__name__)
# 註冊藍圖
# url_prefix是設置訪問這個藍圖的時候需要帶上的路由
app.register_blueprint(main_fun1, url_prefix='/main_fun')
app.register_blueprint(user, url_prefix='/user')
app.register_blueprint(other, url_prefix='/other')
2.3 測試
2.3.1 url_prefix的作用
2.3.2 藍圖的作用
在每個藍圖下面設置相同的home路由
main_func.py下的路由
other.py下的路由
user.py下的路由
三、總結
通過我們的例子可以看到藍圖作爲一個分發管理的工具,在flask開發的過程中尤爲重要,與Django開發的時候設置url的轉發有異曲同工之妙。
note:在引入的時候會出現下面的錯誤,查看原因是由於它不能識別這個文件是個模塊,具體可以查看這個博客。因此需要在當前文件下面建一個__init__.py的文件
ImportError: attempted relative import with no known parent package
四、參考
Flask實例博客:
1. https://blog.csdn.net/weixin_41973615/article/details/82252501
2. https://blog.csdn.net/matengbing/article/details/78582117
3. https://www.cnblogs.com/zishu/p/11158804.html
Flask官方文檔:
1. 1.1.1的官方文檔
2. 0.10.1的 官方文檔