Flask 系列之 Blueprint

Flask 系列之 Blueprint

说明操作系统:Windows 10Python 版本:3.7x虚拟环境管理器:virtualenv代码编辑器:VS Code实验目标

学习如何使用 blueprint

介绍

接触过 DotNet MVC 开发的朋友应该都对 路由 的概念有一定的了解。所谓 路由 就是指我们访问一个网站时,这个网站各个页面访问时对应的 URL 地址。在我们的网站不是很复杂时,我们可以使用最原始的方法来设计路由,但是对待一个大型项目如果我们的路由不能进行统一管理和配置的话,那么对于项目后期来说,是无法维护的。

对于 Flask 来说,当我们的项目达到一定级别的话,可以尝试将我们的项目进行模块化设计,那么对应的路由我们也应该通过某种方式来进行统一管理和配置,这个时候就可以使用 Blueprint 来解决。

Blueprint 中文叫 蓝图,其作用是用于路由的模块化配置与管理。其常用参数如下图所示:

Flask 系列之 Blueprint

其中常用的几个参数为:

name: 蓝图名称;import_name:导入的名称,使用 name 即可;url_prefix:蓝图的访问前缀;使用

打开 Windows Cmd,执行下述操作:

代码语言:javascript代码运行次数:0运行复制

mkdir flask_bppython -m viratulenv venvvenvScriptsactivatepip install flaskcode .

执行完毕后,VS Code 会自动加载该目录并启动起来,我们尝试创建一个最简单的示例程序看一下效果,组织一下我们的项目代码,如下图所示:

Flask 系列之 Blueprint

我们创建了一个项目名为 app 的模块,这个模块作为我们的项目根目录,然后在里面创建了一个 home 子模块,这个模块我们作为我们网站的一个子站点,然后会被注册到主程序中。

定义

apphome  init.py 的示例代码如下所示:

代码语言:javascript代码运行次数:0运行复制

from flask import Blueprintbp = Blueprint('home', __name__)from . import views

使用

apphomeviews.py 的示例代码如下所示:

序列猴子开放平台 序列猴子开放平台

具有长序列、多模态、单模型、大数据等特点的超大规模语言模型

序列猴子开放平台 0 查看详情 序列猴子开放平台 代码语言:javascript代码运行次数:0运行复制

from flask import render_templatefrom . import bp@bp.route('/index')@bp.route('/')def index():    msg = '我是来至模块 home 的视图函数'    return render_template('home/index.html', msg=msg)

添加页面

apptemplatesbase.html 的示例代码如下所示:

代码语言:javascript代码运行次数:0运行复制

                Flask-bp    {% block content %}{% endblock %}

apptemplateshomeindex.html 的示例代码如下所示:

代码语言:javascript代码运行次数:0运行复制

{% extends 'base.html' %} {% block content %}    

{{msg}}

{% endblock %}

注册

**app__init__.py** 的示例代码如下所示:

代码语言:javascript代码运行次数:0运行复制

from flask import Flaskfrom .home import bp as home_bpapp = Flask(__name__)app.register_blueprint(home_bp, url__prefix='/')

添加启动函数

manage.py 的示例代码如下所示:

代码语言:javascript代码运行次数:0运行复制

from app import appif __name__ == "__main__":    app.run(debug=True)

修改完毕后,尝试在当前虚拟环境中执行 flask run 来运行我们的程序,会出现如下图所示的界面:

Flask 系列之 Blueprint

需要补充的一点是,如果我们在 HTML 中访问某个模块的视图函数,可以通过 modulename.routename 方式,在上述的示例中,如果我们想访问到 home 模块中 的 “Index” 路由,那么可以通过 home.index 方式即可。

总结

Blueprint 支持多种配置方式,包括当前模块的路由规则,静态资源的访问位置。需要说明的一点时,由于我们引入了模块化的编程方式,所有可能存在模块与模块之间循环引入的问题,如果出现这种情况的话,我们的某些自定义模块就无法成功导入,这个时候我们可以尝试在某一函数段进行局部导入,这样就可以了。

相关参考用蓝图实现模块化的应用

以上就是Flask 系列之 Blueprint的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/433807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月7日 15:17:12
下一篇 2025年11月7日 15:19:36

相关推荐

发表回复

登录后才能评论
关注微信