一、场景
在进行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的 官方文档