Flask-RESTful——格式化输出字段详解

一、flask-restful格式化输出字段

Flask-RESTful 提供了一个简单的方式来控制在你的响应中实际呈现什么数据。
使用 fields 模块,你可以使用在你的资源里的任意对象(ORM 模型、定制的类等等)
并且 fields 让你格式化和过滤响应,因此您不必担心暴露内部数据结构。

1、基本用法:装饰方法
from flask.ext.restful import Resource, fields, marshal_with

# 定义输出格式化字段
resource_fields = {
   
    'name': fields.String,
    'address': fields.String,
    'date_updated': fields.DateTime(dt_format='rfc822'),
}

class Todo(Resource):
	
	# 采用装饰器格式化
    @marshal_with(resource_fields, envelope='resource') 
    # marshal_with 能够在单个对象,字典,或者列表对象上工作。
    def get(self, **kwargs):
        return db_get_todo()  # 返回必须是对象
  '''
这个例子假设你有一个自定义的数据库对象(todo),它具有属性:name, address, 以及 date_updated。该对象上任何其它的属性可以被认为是私有的不会在输出中呈现出来。
一个可选的 envelope 关键字参数被指定为封装结果输出。
'''
2、响应重命名属性

很多时候你面向公众的字段名称是不同于内部的属性名。使用 attribute 可以配置这种映射。

fields = {
   
    'name': fields.String(attribute='private_name'),
    'address': fields.String,
}

lambda 也能在 attribute 中使用

fields = {
   
    'name': fields.String(attribute=lambda x: x._private_name),
    'address': fields.String,
}
3、返回默认值

如果由于某种原因你的数据对象中并没有你定义的字段列表中的属性,你可以指定一个默认值而不是返回 None。

fields = {
   
    'name': fields.String(default='Anonymous User'),
    'address': fields.String,
}
4、自定义字段&多个值

当一个属性存储多条信息的时候是特别有用的。

class 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值