flask-restful 使用@marshal_with后 无参数返回怎么设置隐藏字段?

新手上路,请多包涵

使用flask-restful时,在使用了@marshal_with装饰器返回参数时,格式就不能改变了,有什么方法可以用了这个装饰器后还能返回别的信息嘛?

问题出现的环境背景及自己尝试过哪些方法

我自己看了下flask-restful里面的源码,想尝试继承里面的类,或者重写源码方法,可是它们之间的耦合性有点强,完全找不到头绪。(自己能力也不够)

相关代码

class GetLabsView(Resource):  
    fields = {  
        'id': fields.Integer,  
        'name': fields.String,  
        'location': fields.String,  
        'status': fields.Integer,  
        'isDel': fields.Integer  
  
    }  
  
    @marshal_with(fields, envelope\='labs')  
    def get(self):  
        labs = Lab.query.filter(Lab.isDel == 1).all()  
        if labs:  
            return labs, 200  
        else:  
            return {"msg": "No resources"}, 200

当数据库没有labs的数据时,我想让它返回我直接定义的json,而不是以下的内容:

image.png

阅读 4.5k
3 个回答
新手上路,请多包涵

同问此问题,另外想请教下楼主,

fields={
    'time': fields.Nested({
                'create_time': fields.DateTime(attribute='create_time'),
                'update_time': fields.DateTime(attribute='update_time')
            })
}

我的模型中有create_timeupdate_time这两个字段,在外层包裹一个time之后,返回create_timeupdate_time都是null,不知道要怎么写才能正确返回?

新手上路,请多包涵

参考abort(404)

问题应该出在
if labs
数据库搜索返回的对象即使是空的,也不是False

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进