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的 官方文档

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