Flask 学习-72.Flask-RESTX 自定义输出日期格式
前言
DateTime类型可以支持2种时间格式 RFC 822 和 ISO 8601,如果需要输出自己想要的格式,需要自定义日期类型。
日期格式
DateTime类型可以支持2种时间格式 RFC 822 和 ISO 8601
demo_model = api.model('DemoModel', {
# ......
'create_time': fields.DateTime(readOnly=True, dt_format='iso8601'),
'update_time': fields.DateTime(readOnly=True, dt_format='rfc822'),
})
序列化后输出的日期显示
"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
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'
,就可以输出自己定义的格式了。
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就可以序列化成
"create_time": "2022-09-22 12:05:05",
"update_time": "2022-09-22 12:05:05"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-09-22 python测试开发django-138.Bootstrap 字体图标(Glyphicons)
2021-09-22 python测试开发django-137.Bootstrap 输入框组件input-group
2021-09-22 python测试开发django-136.Bootstrap 顶部导航navbar
2020-09-22 httprunner学习28-yaml文件 参数化读取 csv 文件字符串转 int
2020-09-22 httprunner学习27-参数关联时在 yaml 文件 int 和 str 数据类型转换
2019-09-22 httprunner学习8-validate校验器
2019-09-22 httprunner学习7-extract提取content返回对象