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