首先感谢为我解惑的我的朋友阿哲,是一位毕业于东北某大学软件工程的小哥哥,经常向他请教自己不懂的问题,这次也不例外,至于结果,不用多想,每次都能如我所愿。贴上他的博客,感兴趣的朋友可以去逛一下。
首先说一下遇到的问题:在数据库中有一个字段的数据类型为datetime
,在取出此字段的值展现在前端页面上的时候,没有正确显示,而显示为undefined
。后来也是问了这位朋友才知道,datetime在前端页面显示的时候需要转换格式,才能正确的显示。
这是数据库字段类型截图:
没有转换格式之前显示在前端页面的截图:
如果没有对datetime进行格式转换,而是直接对datetime
类型对象进行可序列化,就像下图👇,直接对datetime类型
的字段sale_time
进行序列化,会报错TypeError: Object of type datetime is not JSON serializable
。
可序列化实现方法:
from datetime import datetime
from datetime import date
class DateEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime("%Y-%m-%d")
else:
return json.JSONEncoder.default(self, obj)
所以,使用上面👆的代码其实就是对原有的JSONdump
进行二次改写,然后再调用,就可以支持日期格式的JSONdump
了。
最后在返回的时候调用这个类就可以了。如下:
下面是转换后的效果: