Flask中的blueprint 蓝图简单示例

简介: Flask中的blueprint 蓝图简单示例

在python Flask中,我们有时需要将一个网站良好的组织起来,形成开发人员易于理解的结构。app.py一个文件不足以完成这样的任务,需要承载所有的链接,还要做出单独的错误处理、日志处理等功能,都放在一个文件中就比较臃肿。


Flask提供了蓝图这种想法,来做这件事。所谓蓝图,实际是将多个路径(/***)下面的函数放到多个文件。通过Flask蓝图的注册机制,让app.py知道某一个链接的路由应该找哪一个子文件。这样的子文件,可以认为是路由注册文件。


Blueprint源代码中大体的想法,是先提供一组Blueprint的函数,通过注册机制让主文件,类似app.py这样的文件知道注册了一些路径。再让主文件在收到请求时,去包含该路径的子文件查找页面逻辑,最后render在view中。


操作:定义子文件,比如B.py,在内部定义函数,用flask的Blueprint初始化childroute,然后用@childroute.route(),def函数去做闭包。


在主文件中,对执行体app进行蓝图注册,用register_blueprint函数。

app.py示例:


增加注册


from flask import Flask
from simple_page.simple_page import simple_page
#goto localhost:5000/hello
app = Flask(__name__)
app.register_blueprint(simple_page)
# Blueprint can be registered many times
#goto localhost:5000/pages/hello
app.register_blueprint(simple_page, url_prefix='/pages')
app.register_blueprint(simple_page, url_prefix='/dir')
if __name__ == '__main__':
    app.run(debug=True)


从上面的多个register_blueprint函数可以看到,一个文件可以被注册多次,这样不同的路径就可以指向同一个目标文件、同一个函数了。import时,就从simple_page文件夹中的simple_page文件导入一个simple_page包


蓝图的子文件示例:

from flask import Blueprint, render_template, abort
from jinja2 import TemplateNotFound
simple_page = Blueprint('simple_page', __name__,
                        template_folder='templates')
@simple_page.route('/', defaults={'page': 'index'})
@simple_page.route('/<page>')
def show(page):
    try:
        return render_template('pages/%s.html' % page)
    except TemplateNotFound:
        abort(404)


将它们分别放入以下的文件夹:


example
|--app.py
|--simple_page
  |--simple_page.py
|--templates
  |--pages
    |--hello.html
    |--index.html
    |--layout.html
    |--world.html


对应关系如下;


app.register_blueprint(new_page)

   对应  


new_page = Blueprint('new_page', __name__,
                        template_folder='templates')


这个函数的第一个参数可以和外面的new_page不同名。



目录
相关文章
|
2月前
|
数据采集 调度 数据库
flask-apscheduler的使用与示例
flask-apscheduler的使用与示例
145 4
|
2月前
|
前端开发 JavaScript 中间件
七、Flask蓝图使用之七
七、Flask蓝图使用之七
44 0
|
5月前
|
存储 数据库 开发者
Flask中的蓝图与插件应用:构建模块化Web应用的利器
【7月更文挑战第19天】Flask蓝图和插件是构建模块化、可扩展和可维护Web应用的强大工具。蓝图允许你将应用分割成多个独立的部分,提高了代码的组织性和可重用性;而插件则为Flask应用提供了丰富的功能和社区支持,简化了开发过程。通过合理地使用蓝图和插件,你可以更加高效地开发出高质量的Web应用。
|
6月前
|
Python
Flask蓝图(Blueprint)
蓝图是一种将路由、视图函数和静态文件等组织在一起的方法。它将相似功能的路由和视图函数分组,使得应用程序更易于维护和扩展。下面是一个简单的蓝图示例:app.run()在上述示例中,我们创建了一个名为的蓝图,并将路由定义在其中。然后,我们通过方法将蓝图注册到 Flask 应用程序中。这样,当用户访问和/about路径时,Flask 将调用相应的视图函数并返回结果。
82 1
|
6月前
|
前端开发 Python
Flask之ajax操作示例
Flask之ajax操作示例
37 2
|
5月前
|
API Python
Flask-RESTful基础示例
Flask-RESTful基础示例
|
7月前
|
存储 缓存 安全
Flask中的Blueprint
【5月更文挑战第15天】在Flask中,Blueprints用于实现Web应用的模块化,帮助组织路由和视图。它们提供模块化组织、路由命名空间和代码可重用性。通过创建和注册蓝图,如`auth_bp`和`blog_bp`,相关功能的代码可以分组,便于管理和维护。蓝图间可通过`session`共享数据,实现更复杂的功能。蓝图还能管理模板和静态文件,与测试框架和文档工具集成,并在部署和扩展时保持应用性能。通过合理利用Blueprints,开发者可以构建易于维护、高性能且安全的大型Web应用。
58 0
|
JSON 安全 数据格式
Flask 高级应用:使用蓝图模块化应用和 JWT 实现安全认证
本文将探讨 Flask 的两个高级特性:蓝图(Blueprints)和 JSON Web Token(JWT)认证。蓝图让我们可以将应用模块化,以便更好地组织代码;而 JWT 认证是现代 Web 应用中常见的一种安全机制。
|
7月前
|
Java 数据库 Python
python flask 简单示例
python flask 简单示例
85 2
|
Linux 数据库 Python
Flask 开发个人博客简单示例
步骤1:准备工作首先,确保您已经安装了Python和pip。然后,创建一个新的文件夹来存放项目,并在命令行中进入该文件夹。步骤2:创建虚拟环境为了隔离项目的依赖和环境,我们建议在项目文件夹中创建一个虚拟环境。在命令行中运行以下命令:python -m venv venv这将创建一个名为venv的虚拟环境文件夹。步骤3:激活虚拟环境根据您使用的操作系统,在命令行中运行适当的命令来激活虚拟环境:...
125 0