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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM