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 是更常见的工程化写法。
相关推荐
duansamve3 天前
Python3+Flask+PostgreSQL18+Vue3项目生产环境用docker如何部署?
python·docker·flask
duansamve3 天前
详解Flask中Session和Cookie
python·flask
duansamve3 天前
Flask中视图函数接收请求数据和返回响应实例
python·flask
梅雅达编程笔记4 天前
退款之后钱货两空:Flask售后退款状态机加库存回滚加原路退回
flask·毕设·状态机·电商系统·退款·售后·myd电商
梅雅达编程笔记5 天前
忘记密码只能找客服:Flask邮箱验证码重置密码加限流防爆破
flask·限流·毕设·电商系统·myd电商·找回密码·邮箱验证码
hhcgchpspk6 天前
flask服务端页面预防被爬措施
后端·python·flask·网络爬虫·防爬
Blockbuater_drug8 天前
《经典机器学习实战》第 5 课:把模型做成 Web 应用(UFO)
flask·pickle·模型部署·web应用·机器学习上线·ufo数据集·rest接口
梅雅达编程笔记10 天前
下单不付款库存被占?Flask定时任务自动取消超时订单+回滚库存
flask·毕设·定时任务·电商系统·apscheduler·myd电商·超时订单
薛定谔的猫-菜鸟程序员12 天前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
小咕聊编程16 天前
教育大数据可视化系统
python·django·flask