晚安,
我遇到了一些严重的问题让我更加安静,它应该非常简单并且已经过去但是我试图以不同的格式加载我的库并且我一直遇到这个错误。
我对python很新,所以我确信我犯了一些简单的错误。
我正在建立我的结构并从这个骨架中加载动态https://github.com/imwilsonxu/fbone
基础是这个 在我的扩展文件中,我已经定义了
from flask.ext import restful
api= restful.Api()
然后在我的app.py文件中执行此操作
app = Flask(app_name, instance_path=INSTANCE_FOLDER_PATH, instance_relative_config=True)
configure_app(app, config)
configure_blueprints(app, blueprints)
configure_extensions(app)
def configure_extensions(app):
# Flask-restful
api.init_app(app)
然后最终在给定的蓝图中我导入api并尝试hello world示例
from sandbox.extensions import api
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
api.add_resource(HelloWorld, '/')
这是我得到的错误。
AttributeError:'Api'对象没有属性'endpoints'
任何帮助将不胜感激。
答案 0 :(得分:3)
您收到此错误的原因是因为您在引用了Flask应用程序的有效实例之前尝试将flask-restful资源添加到api对象。
解决这个问题的一种方法是将所有add_resource调用包装在一个单独的函数中,然后在应用程序和扩展程序初始化之后调用此函数。
在你的蓝图中 -
from sandbox.extensions import api
class HelloWorld(restful.Resource):
def get(self):
return {'hello': 'world'}
def add_resources_to_helloworld():
""" add all resources for helloworld blueprint """
api.add_resource(HelloWorld, '/')
在app.py中
def configure_extensions(app):
# initialize api object with Flask app
api.init_app(app)
# add all resources for helloworld blueprint
add_resources_to_helloworld()
这将确保仅在api对象引用已初始化的Flask应用程序之后才将资源添加到您的应用程序,即。在调用init_app(app)之后。