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

目录

  • 前言
  • [1. 基本知识](#1. 基本知识)
  • [2. Demo](#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.py

from 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.py

from flask import Flask
from my_blueprint import my_blueprint

app = 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 视图

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

相关推荐
恸流失26 分钟前
DJango项目
后端·python·django
Julyyyyyyyyyyy1 小时前
【软件测试】web自动化:Pycharm+Selenium+Firefox(一)
python·selenium·pycharm·自动化
Hygge-star2 小时前
【Flask】:轻量级Python Web框架详解
css·flask·html·学习方法·web app
蓝婷儿2 小时前
6个月Python学习计划 Day 15 - 函数式编程、高阶函数、生成器/迭代器
开发语言·python·学习
love530love2 小时前
【笔记】在 MSYS2(MINGW64)中正确安装 Rust
运维·开发语言·人工智能·windows·笔记·python·rust
Mr Aokey3 小时前
Spring MVC参数绑定终极手册:单&多参/对象/集合/JSON/文件上传精讲
java·后端·spring
水银嘻嘻3 小时前
05 APP 自动化- Appium 单点触控& 多点触控
python·appium·自动化
狐凄3 小时前
Python实例题:Python计算二元二次方程组
开发语言·python
地藏Kelvin4 小时前
Spring Ai 从Demo到搭建套壳项目(二)实现deepseek+MCP client让高德生成昆明游玩4天攻略
人工智能·spring boot·后端
烛阴4 小时前
Python枚举类Enum超详细入门与进阶全攻略
前端·python