前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Flask 学习-72.Flask-RESTX 自定义输出日期格式

Flask 学习-72.Flask-RESTX 自定义输出日期格式

作者头像
上海-悠悠
发布2022-09-27 16:59:51
7930
发布2022-09-27 16:59:51
举报
文章被收录于专栏:从零开始学自动化测试

前言

DateTime类型可以支持2种时间格式 RFC 822 和 ISO 8601,如果需要输出自己想要的格式,需要自定义日期类型。

日期格式

DateTime类型可以支持2种时间格式 RFC 822 和 ISO 8601

代码语言:javascript
复制
demo_model = api.model('DemoModel', {
     # ......
    'create_time': fields.DateTime(readOnly=True, dt_format='iso8601'),
    'update_time': fields.DateTime(readOnly=True, dt_format='rfc822'),
})

序列化后输出的日期显示

代码语言:javascript
复制
 "create_time": "2022-09-22T12:05:05",
 "update_time": "Thu, 22 Sep 2022 12:05:05 -0000"

我们想要的日期类型2022-09-22 12:05:05

自定义日期类

自定义一个字段,继承fields.DateTime

代码语言:javascript
复制
class CustomDate(fields.DateTime):
    '''
    自定义CustomDate,原有的fileds.DateTime序列化后
    只支持 rfc822,ios8601 格式,新增 strftime 格式
    strftime格式下支持 format 参数,默认为 '%Y-%m-%d %H:%M:%S'
    '''

    def __init__(self, dt_format='rfc822', format=None, **kwargs):
        super().__init__(**kwargs)
        self.dt_format = dt_format

    def format(self, value):
        if self.dt_format in ('rfc822', 'iso8601'):
            return super().format(value)
        elif self.dt_format == 'str_time':
            if isinstance(value, str):
                return value
            return value.strftime('%Y-%m-%d %H:%M:%S')

        else:
            raise Exception('Unsupported date format %s' % self.dt_format)

于是我们只需要设置参数dt_format='str_time',就可以输出自己定义的格式了。

代码语言:javascript
复制
demo_model = api.model('DemoModel', {
    'create_time': CustomDate(readOnly=True, dt_format='str_time'),
    'update_time': CustomDate(readOnly=True, dt_format='str_time'),
})

于是使用marshal_with就可以序列化成

代码语言:javascript
复制
            "create_time": "2022-09-22 12:05:05",
            "update_time": "2022-09-22 12:05:05"

2022年第 12期《python接口web自动化+测试开发》课程,9月17号开学!

本期上课时间:2022年9月17号 - 2022年12月17号,周六周日上午9:00-11:00

报名费:报名费3000一人(周期3个月)

联系微信/QQ:283340479

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 日期格式
  • 自定义日期类
    • 报名费:报名费3000一人(周期3个月)
      • 联系微信/QQ:283340479
      相关产品与服务
      文件存储
      文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档