django 使用json.dumps转换queryset的datatime报错问题解决

im, 无色
im, 无色
im, 无色
884
文章
0
评论
2019年8月4日19:56:50 评论 421

最近在使用django做项目的时候想使用ajax来实现前后台数据的交互,但是在将数据库查询结果转换成json数据时,遇到时间格式的数据转换遇到问题,无法正确的进行转换,具体如下:

转换成json时使用的方法如下:

json.dumps(MyModel.objects.values())

报错信息如下:

Exception Value: [{'date': datetime.date(2012, 5, 26), 'time': datetime.time(0, 42, 27)}] is not JSON serializable

最后经过google(渣度无解,找到一些方案,但都不太好,而且都是转载来转载去的......)找到的解决方案如下:

from django.core import serializers

from django.core.serializers.json import DjangoJSONEncoder

import json

temp_output = serializers.serialize('python', MyModel.objects.all())

output = json.dumps(temp_output, cls=DjangoJSONEncoder)

ok,搞定。现在万事大吉。。。。but,中文字符转换后乱码?????别着急,只需要在执行json.dumps方法的时候将ensure_ascii设定为False即可,即将下面这行代码进行修改:

temp_output = serializers.serialize('python', MyModel.objects.all())

修改后如下:

temp_output = serializers.serialize('python', MyModel.objects.all(), ensure_ascii=False)

注意如果在查询的时候使用了values,则直接使用:

json.dumps(list(tmp_output), ensure_ascii=False, cls=DjangoJSONEncoder)

 

im, 无色
  • 本文由 发表于 2019年8月4日19:56:50
python调用Sikuliapi Python

python调用Sikuliapi

Sikuli是由MIT(麻省理工学院) 研究团队发布的一种图形化编程技术(编程小白的福音),使用Sikuli你只需要会写HelloWorld这种最基本的编程技能即可,用Sikuli不需要去写出一行行复...
Python集成开发环境:Spyder 中文语音包下载 Python

Python集成开发环境:Spyder 中文语音包下载

历经…. 算了,就是费了点功夫。 Spyder的中文汉化包正式发布了。同时已经在github提交到了原仓库中。剩下的就是等待合并了。 目前状态是主要组件的翻译工作已经完成,有部分很少用到的提示信息没有...
Spyder学习使用总结 Python

Spyder学习使用总结

在学习机器学习的路上一直折腾折腾着,之前用的pycharm,但是经师兄指点,发现spyder有着更好的控制台,变量显示等方便之处,一路磕磕绊绊的转到lspyder的使用上,在搜集了许多帖子之后,结合自...
7行代码告别Python第三方包import导入问题 Python

7行代码告别Python第三方包import导入问题

最近看到很多小伙伴,有那种关于python第三方包导入的问题,比如说明明,python库安装成功了,却不能导入,还有的是无法安装第三方库,今天就聊聊第三个包导入那些破事 在各位学习python渐入佳境...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: