flask中的藍圖(Blueprint)

一、場景

在進行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的 官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章