Django将对象发送为json

时间:2014-05-04 15:38:38

标签: json django django-haystack paginator

有没有办法用json(或除渲染之外的任何其他东西)发送一个用paginator制作的object_list?浏览器正在发出getjson jquery请求,并且views.py函数应该返回该对象。我想返回一个json对象而不是渲染一个新页面的原因是因为我不希望页面重新加载

以下views.py代码:

searchresults = form.search()#this is a call to a haystack form template
results = Paginator(searchresults, 20)
page = results.page(1)
return HttpResponse(json.dumps(page), content_type='application/json')

获取此错误:

TypeError: <Page 1 of 1> is not JSON serializable

2 个答案:

答案 0 :(得分:2)

只需使用django序列化https://docs.djangoproject.com/en/dev/topics/serialization/

from django.core import serializers
...
return HttpResponse(serializers.serialize("json", [q.object for q in results.page(1).object_list]), content_type='application/json')

答案 1 :(得分:0)

您需要创建一个可序列化为@evilx的字典,或者手工制作自己的Json。