我很难使用[Flask-RESTful] [1]在嵌套输出字段中生成api端点网址。
我发现fields.Url('my_endpoint', absolute=True)
只在顶级网址字段中生成网址,而不是嵌套网格字段。它抛出werkzeug.routing.BuildError
- [错误日志要点] [1] https://gist.github.com/anonymous/6251c67089871d0e4516
例如,这是我的网址
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),
}
答案 0 :(得分:0)
问题是fields.Url
需要一个必需的端点参数,在这种情况下是username
。
参数username
可用于user_fields
返回的user
对象,但role
对象user.role
不包含username
属性
所以我在返回之前分配了'用户名attribute to
user.role`对象。
user = get_user(username) #Get user object from db
user.role.username = user.username
return user