如何添加字段网址为嵌套的输出字段在平静的瓶子里 [英] How to add fields url for nested output fields in flask restful

查看:116
本文介绍了如何添加字段网址为嵌套的输出字段在平静的瓶子里的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在使用[Flask-RESTful] [1]生成嵌套输出字段中的api endpoint urls时遇到困难。

我发现 Url('my_endpoint',absolute = True)只在顶层url字段内生成url,而不是嵌套的url。它会抛出 werkzeug.routing.BuildError - [Error log gist] [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.Ne sted(role_fields),
}


解决方案

问题是 fields.Url 需要一个必需的端点参数,在这种情况下它的 username
$ b $

参数用户名可用于 user_fields 返回用户对象,但角色对象 user.role 不包含用户名属性。



因此我将用户名属性分配给
$ p $ user $ get_user(username)#从db $获取用户对象code> user.role`对象在返回之前。 b $ b user.role.username = user.username
返回用户


I am having difficulty over generating api endpoint urls in nested output fields using [Flask-RESTful][1].

I found that fields.Url('my_endpoint', absolute=True) only generates url inside top url fields not the nested one. It throws werkzeug.routing.BuildError - [Error log gist][1]https://gist.github.com/anonymous/6251c67089871d0e4516

For example here is my url fields

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),
}

解决方案

The problem was fields.Url needs a required endpoint parameter, In this case its username.

The parameter username is available to user_fields with the returned user object, but the role object user.role does not contain username attribute.

So I assigned 'usernameattribute touser.role` object before returning it.

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

这篇关于如何添加字段网址为嵌套的输出字段在平静的瓶子里的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆