【问题标题】:How to add fields url for nested output fields in flask restful如何在flask restful中为嵌套输出字段添加字段url
【发布时间】:2014-12-14 17:25:51
【问题描述】:

我在使用 [Flask-RESTful][1] 在嵌套输出字段中生成 api 端点 url 时遇到了困难。

我发现fields.Url('my_endpoint', absolute=True) 只在顶部 url 字段中生成 url 而不是嵌套的。它抛出werkzeug.routing.BuildError - [错误日志要点][1]https://gist.github.com/anonymous/6251c67089871d0e4516

例如这里是我的 url 字段

role_fields = {
    'name': fields.String(attribute='title'),
    'id': fields.Integer(attribute='id'),
    'uri': fields.Url('user_endpoint', absolute=True)
}


user_fields = {
    'id': fields.Integer,
    'username': fields.String,
    'email': fields.String,
    'full_name': fields.String(attribute='real_name'),
    'website': fields.String(default=None),
    'bio': fields.String(default=None),
    'created_date': fields.DateTime,
    'modified_date': fields.DateTime,
    'uri': fields.Url('user_endpoint', absolute=True),
    'role': fields.Nested(role_fields),
}

【问题讨论】:

    标签: python flask flask-restful


    【解决方案1】:

    问题是fields.Url 需要一个必需的端点参数,在本例中为username

    user_fields 可以使用参数username 与返回的user 对象,但role 对象user.role 不包含username 属性。

    所以我在返回之前分配了 'usernameattribute touser.role` 对象。

    user = get_user(username) #Get user object from db
    user.role.username = user.username
    return user
    

    【讨论】:

      猜你喜欢
      • 2017-03-23
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-17
      相关资源
      最近更新 更多