首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Flask-Restful -对象没有端点

Python Flask-Restful -对象没有端点
EN

Stack Overflow用户
提问于 2013-05-16 08:21:46
回答 1查看 2.8K关注 0票数 1

晚上好,

我在让flask-restful为我工作时遇到了一些严重的问题,这应该是非常简单的,而且已经是过去的事情了,但我正在尝试以不同的格式加载我的库,并且我总是遇到这个错误。

我是python的新手,所以我确信我犯了一些简单的错误。

我将基于这个骨架https://github.com/imwilsonxu/fbone构建我的结构并加载动态内容

基本信息是在我的扩展文件中定义的

代码语言:javascript
复制
from flask.ext import restful
api= restful.Api()

然后在我的app.py文件中,我这样做

代码语言:javascript
复制
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示例

代码语言:javascript
复制
from sandbox.extensions import api

class HelloWorld(restful.Resource):
def get(self):
    return {'hello': 'world'}

api.add_resource(HelloWorld, '/')

这就是我得到的错误。

AttributeError:“”Api“”对象没有属性“”endpoints“”

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2013-09-20 03:34:21

出现此错误的原因是,在api对象引用Flask应用程序的有效实例之前,您正在尝试将flask-restful资源添加到api对象。

解决此问题的一种方法是将所有add_resource调用包装在一个单独的函数中,然后在应用程序和扩展初始化后调用此函数。

在你的蓝图里-

代码语言:javascript
复制
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中

代码语言:javascript
复制
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)之后。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16577091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档