如何解决Python Flask_restplus flash_restx动态编组响应
是否可以动态修改编组的响应模型(即:更改字段列表,添加掩码等)?
ex:
from flask_restplus import Resource,fields
model = api.model('Model',{
'name': fields.String,'address': fields.String,'date_updated': fields.DateTime(dt_format='rfc822'),})
@api.route('/todo')
class Todo(Resource):
@api.marshal_with(model,envelope='resource')
def get(self,**kwargs):
return db_get_todo() # Some function that queries the db
此处,将通过装饰器静态声明编组。如果我想在用户不是管理员时根据示例date_updated进行屏蔽,或者根据用户的偏好设置,则不能。
我看到了以下示例:https://blog.fossasia.org/dynamically-marshaling-output-in-flask-restplus/ 这很有趣,但是它使用了另一个静态模型,因此它并不是真正的动态模型,并且暗含代码重复(确保可以使用继承,...)
我希望能够动态更改字段或从可能来自数据库的列表(例如用户首选项或权限)中添加掩码。
我试图手动整理答案
wanted_field_list='name,address'
return marshal(db_get_todo(),model,mask=wanted_field_list),200
如果我删除装饰器@marshall_with效果很好,但缺点是我不再拥有Swagger文档了
{ 'name':'blabla','address':'xxx'}
如果我保留装饰器,它仍然可以通过不需要的字段工作,并且仍然使用Null值呈现:
{ 'name':'blabla','address':'xxx','date_updated : null}
这不是预期的结果
我试图移动到flask_restx,我的招摇不上,我还有其他问题。
非常欢迎任何帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。