sanic

使用sanic开发web应用时,通常需要与数据库进行协作,所以不可避免地要使用DateTimeField类型的字段,而datetime不是标准的数据类型,无法被json序列化。因此,

当sanic的response.json()返回数据时,如果models字段具有日期时间类型,则会引发“日期时间类型的对象不是json可序列化的”异常。这里应该有300字。太难了。

解决方案:

定义JsonDateTime类,继承json。JSONEncoder,并重写默认方法。

从日期时间导入日期,日期时间类json日期时间(JSON。JSONEncoder): def default(self,obj): if isinstance(obj,datetime):return obj . strftime(& # 39;% Y-% M-% d % H:% M:% S & # 39;)elif isinstance(obj,date):return obj . strftime(& # 39;% Y-% m-% d & # 39;)else:return JSON . jsonencoder . default(self,obj),只需要指定dumps = json.dumps和cls = jsondatetime:

from json import dumpsdef ResponseSuccess(code, data): return json({ 'code': code, 'msg': message.get(code), 'data': data }, dumps=dumps, cls=JsonDateTime)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

发表回复

登录后才能评论