Django 以 JSON 格式返回单个记录
Posted
技术标签:
【中文标题】Django 以 JSON 格式返回单个记录【英文标题】:Django return a single record as JSON 【发布时间】:2011-01-16 09:19:09 【问题描述】:我创建了一个表单,用于在我们的网络管理员中添加有关客户的注释。我正在使用 jQuery 和 Ajax 提交 for。我希望 Django 视图返回新添加的注释/记录,以便我可以将其附加到客户注释表中。我的 Ajax 发送正在工作,并且正在保存笔记,但我无法显示结果。
我已经尝试了以下 3 行(分别):
serializers.serialize("json", Note.objects.get(id=new_note.id))
serializers.serialize("json", new_note)
return HttpResponse(simplejson.dumps(new_note), mimetype='application/javascript')
前2个各产生:
'Note' object is not iterable
第三个给了我:
<Note: Note object> is not JSON serializable
我实际上并不关心我返回对象的格式,只要我可以使用 jQuery 接收和显示记录的每个字段。
谢谢。
【问题讨论】:
【参考方案1】:来自the docs:
serialize 函数的参数是将数据序列化为的格式(请参阅序列化格式)和要序列化的 QuerySet。
使用filter()
而不是get()
。
【讨论】:
谢谢。我阅读了文档,发现它必须是一个查询集,我没有意识到它可以与 .filter() 一起使用。 我真的认为 neoprolog 的答案正是您在这种情况下所寻找的。不是每个人都拥有他们想要序列化的那一刻想要使用的查询集。【参考方案2】:用途:
serializers.serialize("json", [new_note])
(注意查询对象周围的方括号)
【讨论】:
以上是关于Django 以 JSON 格式返回单个记录的主要内容,如果未能解决你的问题,请参考以下文章
Django Rest Framework:默认以 JSON 格式输出到浏览器