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 是更常见的工程化写法。
相关推荐
专业程序开发源12 小时前
flask动漫推荐系统32319-计算机课程设计、毕业设计
java·spring boot·后端·django·flask·php·课程设计
qq_2518364572 天前
理发管理系统 —— 会员模块
开发语言·前端·python·flask
昔我往昔2 天前
init文件介绍
python·flask
阿钱真强道2 天前
25 嵌入式操作系统 | 设备面板:用 Qt 控件把“设备“画出来(本节不接串口)
开发语言·qt·flask·架构设计·协议契约
阿钱真强道3 天前
30 嵌入式操作系统 | 上位机界面:Flask 网页显示 + 控制闭环
后端·python·flask
沐欣工作室_lvyiyi4 天前
基于Flask的旅游大数据分析与可视化系统(论文+源码)
python·flask·旅游
阿钱真强道5 天前
24 嵌入式操作系统 | 项目启动与环境准备(PyQt5 / Flask 两个“最小可跑“)
开发语言·qt·flask·架构设计·协议契约
龙腾AI白云6 天前
AI微调技术:让通用大模型精准适配垂直行业
数据库·人工智能·机器学习·flask·scikit-learn
小马哥程序开发7 天前
[点赞收藏免费领取 · 项目源码]37399民族服饰饰品商城小程序
sql·mysql·flask·源码·课程设计·程序开发·课设