Blueprint和route的区别

蓝图和路由的区别?

@main_bp.route 和 @app.route 本质都是给视图函数绑定 URL,区别在于:

@app.route 直接注册到 Flask 应用;

@main_bp.route 先注册到蓝图,蓝图再通过 app.register_blueprint() 注册到应用。

代码对比

方式一:直接用 @app.route

python 复制代码
from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/login')
def login():
    return '登录页'

@app.route('/register')
def register():
    return '注册页'

if __name__ == '__main__':
    app.run()

方式二:用蓝图 @main_bp.route

python 复制代码
# app/main/__init__.py
from flask import Blueprint

main_bp = Blueprint('main', __name__)

from app.main import routes  # 导入路由,避免循环导入
# app/main/routes.py
from flask import render_template
from app.main import main_bp

@main_bp.route('/')
def index():
    return render_template('index.html')
# app/auth/routes.py
from flask import Blueprint

auth_bp = Blueprint('auth', __name__)

@auth_bp.route('/login')
def login():
    return '登录页'

@auth_bp.route('/register')
def register():
    return '注册页'
# app/__init__.py
from flask import Flask
from app.main import main_bp
from app.auth import auth_bp

def create_app():
    app = Flask(__name__)
    app.register_blueprint(main_bp)              # /
    app.register_blueprint(auth_bp, url_prefix='/auth')  # /auth/login, /auth/register
    return app

主要区别

维度 @app.route @main_bp.route
注册对象 直接注册到 app 先注册到蓝图,再由 app 注册
URL 前缀 每个路由手动写 注册时可统一加 url_prefix
代码组织 适合小项目,路由容易堆在一起 适合按模块拆分,如 main、auth、api
url_for url_for('index') url_for('main.index')
复用性 不可复用 同一个蓝图可注册到多个应用或不同前缀
独立资源 共用 templates/、static/ 蓝图可配置自己的模板和静态文件目录

企业里哪个用得多?

中小项目、练习项目、原型项目:@app.route 更常见,因为简单直接,文件少,不用一开始就拆模块。

正式项目、多人协作项目、中大型项目:蓝图用得更多。 实际工作中,Flask 项目通常会按功能拆成 main、auth、api、admin 等蓝图,再配合 create_app 工厂模式。

简单判断:

  • 只有一个文件、几个路由 → 用 @app.route 就行。
  • 有登录、后台、API、用户中心等多个模块 → 用蓝图更合适。
  • 准备做测试、多环境配置、多人开发 → 蓝图 + create_app 是更常见的工程化写法。
相关推荐
tryCbest3 天前
Python之Flask项目部署到阿里云
python·阿里云·flask
心运软件5 天前
Fashion-MNIST 图像分类实战:TensorFlow 五模型对比与 Flask 可视化
分类·flask·tensorflow
编码者卢布5 天前
【Azure Storage Account】Azure Queue指标中的Transactions 高,真实业务处理的消息就多吗?
microsoft·flask·azure
winfredzhang8 天前
从零实现“照片按地理位置显示在矢量地图上”:Flask + SQLite + Leaflet 全栈实战
python·sqlite·flask
龙腾AI白云9 天前
数字孪生、具身智能、世界模型三者交叉
数据库·人工智能·机器学习·flask·pygame
hhb_61811 天前
Flask+SQLite实现用户管理接口
python·sqlite·flask
QQ142207844912 天前
基于 Flask 的「自动任务控制台」设计与踩坑实录
后端·python·flask
深圳市尚想信息技术有限公司13 天前
TM52F1376海速芯HITENX Flash-8位MCU单片机,多通道ADC + 段码显示一体化主控芯片
单片机·嵌入式硬件·mcu·flask·芯片·控制器
高级程序源13 天前
django校园寻物通失物招领平台32261-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·django·flask·课程设计
高级程序源14 天前
SSM仓储管理系统31582-计算机课程设计、毕业设计
vue.js·python·mysql·小程序·flask·课程设计