【发布时间】:2015-09-06 08:24:04
【问题描述】:
我正在使用 DJango 1.8 和 Python 3.4
当下面的视图运行时,Django 抛出 Type Error - Object is not JSON Serializable
Views.py
from django.http import HttpRequest,HttpResponse
from django.http import JsonResponse
from json import dumps
def get_stats(request):
if request.method == "POST":
srch_dropV = request.POST['srch_dropAJ']
else:
srch_dropV = ''
if(srch_dropV == 'Green'):
students = GreenBased.objects.all()
if(srch_dropV == 'Yellow'):
students = YellowBased.objects.all()
response_data = {}
try:
response_data['result'] = 'Success'
response_data['message'] = list(students)
except:
response_data['result'] = 'Ouch!'
response_data['message'] = 'Script has not ran correctly'
return HttpResponse(JsonResponse(response_data), content_type="application/json")
我正在尝试从 mysql 数据库中读取几行并将其显示在 html 文件中,当上面的视图正在运行时,我面临下面的错误消息
TypeError: YellowBased: YelloBased object is not JSON serializable
在 HTML 页面中,我有一个下拉列表。根据选择的选项,我的 Ajax 会返回从 mysql 表中获取的记录。
Models.py
class GreenBased(models.Model):
NumOfStudents = models.CharField(max_length=300,blank=True)
Green = models.CharField(max_length=300,blank=True)
class Meta:
managed = False
db_table = "GreenStats"
class YelloBased(models.Model):
NumOfStudents = models.CharField(max_length=300,blank=True)
Yellow = models.CharField(max_length=300,blank=True)
class Meta:
managed = False
db_table = "YellowStats"
GreenStats 和 YellowStats 表在 mysql 中只包含 2*2 行 有人可以帮我确定这个问题吗?
【问题讨论】:
-
我已经检查过了。在 DJango 1.8 中,Json 库已更改,我遗漏了一些东西 :(.. response_data['message'] = list(students) 行在视图中似乎失败了。我正在尝试解决问题,但是还不能解决
-
抱歉,此行失败 return HttpResponse(JsonResponse(response_data), content_type="application/json")
-
如果您要交换 JSON 并构建某种 api,我可以建议 django-rest-framework.org 吗?它具有构建 json 视图、高级可定制序列化程序和自动过滤的工具。
标签: python json django python-3.x serialization