Flask使用flask_restful启动报错'Api' object has no attribute 'record'如何解决
报错根因与修复方案
1. AttributeError 报错解决
报错的核心原因是覆盖了原生Flask应用实例:
你代码中第一行生成的app是Flask框架的原生应用实例,第二行直接把Api实例赋值给了同名的app变量,导致第三行初始化第二个Api实例web时,传入的参数已经变成了Api对象而非Flask原生对象,而Api初始化要求传入的参数必须是Flask应用或者蓝图实例,因此触发了找不到record属性的报错。
修复后的__init__.py代码如下:
from flask import Flask from flask_restful import Api # 保留原生Flask应用实例,不要覆盖 app = Flask(__name__, template_folder='views') # 给Api实例起独立的变量名 api = Api(app, prefix='/api') web = Api(app) from app import routes
如果你的路由需要分别注册到两个Api实例上,在routes文件里调用对应的api.add_resource()或者web.add_resource()方法注册接口即可。
2. 未解析导入报错解决
该报错属于IDE路径识别问题,按如下步骤处理即可:
- 确认你的项目目录结构符合Flask包规范,参考结构:
项目根目录/ ├── app/ │ ├── __init__.py │ ├── routes.py
- 在IDE中把项目根目录标记为源文件根目录:PyCharm里右键根目录→Mark Directory as→Sources Root;VSCode里在
settings.json中配置python.analysis.extraPaths,添加你的项目根目录路径。 - 不要将项目启动文件放在
app包内部,统一放在项目根目录下。
内容的提问来源于stack exchange,提问作者arahpanah
相关产品推荐
相关产品推荐

