You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python程序中运行Flask Blueprint时报AttributeError如何解决?

报错原因

Flask 中的 Blueprint 本质是用于模块化管理路由的容器组件,本身没有提供启动Web服务的run()方法,该方法仅属于Flask核心应用实例对象,直接调用Blueprint对象的run方法自然会抛出属性不存在的异常。

解决方法

你需要创建Flask核心应用实例,将编写的Blueprint注册到该实例后,调用核心实例的run()方法启动服务,完整可运行的参考代码如下:

from flask import Flask, Blueprint, render_template
from flask_login import LoginManager, UserMixin, login_required, current_user

# 原有Blueprint定义逻辑
main = Blueprint('main', __name__)

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

@main.route('/profile')
@login_required
def profile():
    return render_template('profile.html', name=current_user.name)

# 新增Flask核心实例初始化逻辑
app = Flask(__name__)
# 配置flask-login必要参数
app.config['SECRET_KEY'] = '自定义加密密钥,生产环境请替换为随机复杂字符串'
login_manager = LoginManager()
login_manager.init_app(app)

# 实现flask-login要求的用户加载回调
@login_manager.user_loader
def load_user(user_id):
    # 此处替换为你的实际用户查询逻辑,示例为模拟用户对象
    class DemoUser(UserMixin):
        id = 1
        name = "演示用户"
    return DemoUser() if user_id == "1" else None

# 注册Blueprint到核心应用
app.register_blueprint(main)

if __name__ == "__main__":
    # 调用核心应用的run方法启动服务
    app.run(debug=True)
  • 如果你的项目是多文件结构,也可以将Blueprint单独拆分到独立的模块文件,在入口文件导入后注册到核心应用实例即可,Blueprint的设计目的就是拆分不同业务模块的路由,支持多人协作开发时各自维护不同业务模块的路由逻辑。

内容的提问来源于stack exchange,提问作者fizz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:48:04