【问题标题】:BuildError when trying to use Flask fields.Url尝试使用 Flask fields.Url 时出现 BuildError
【发布时间】:2015-02-23 10:46:15
【问题描述】:

我正在使用 Flask 和 SqlAlchemy 构建 API,但遇到了 fields.Url() 的问题,我无法弄清楚。我收到以下错误:

BuildError: ('storagenode_ep', MultiDict([('_sa_instance_state', <sqlalchemy.orm.state.InstanceState object at 0x4a76ad0>), ('id', 7), ('hostname', u'testNode1')]), None)

如果我只返回 id 而不是尝试使用field.Url(),它就可以正常工作。 下面的简化类演示了这个问题:

storagenode_fields = {
    'hostname': fields.String,
    'uri': fields.Url('storagenode_ep')
    # 'id': fields.String
}

class StorageNodeAPI(Resource):
    @marshal_with(storagenode_fields)
    def get(self, storagenode_id):
        return StorageNode.query.filter_by(id=storagenode_id).first()

api.add_resource(StorageNodeAPI, '/api/storagenodes/<string:storagenode_id>', endpoint='storagenode_ep')

我有read this 可以更好地了解端点的方式,但我仍然卡住了。

StorageNode class 定义如下:

class StorageNode(Base):
    __tablename__ = 'storagenode'
    id = Column(Integer, primary_key=True)
    hostname = Column(String(150), unique=True)

【问题讨论】:

  • 你解决过这个问题吗?我也有类似的问题。

标签: python flask


【解决方案1】:

您需要在返回之前分配“storagenode_ep”

How to add fields url for nested output fields in flask restful的帮助下解决了类似的问题

但如果您使用的是蓝图,请将“.”添加到fields.Url,例如 'uri': fields.Url('.storagenode_ep')

参考https://github.com/flask-restful/flask-restful/issues/266#issuecomment-46678118

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2016-10-12
    • 2021-10-30
    • 2020-04-12
    • 2020-12-04
    • 2017-11-28
    • 2013-10-31
    相关资源
    最近更新 更多