【问题标题】:Django: serialize ValuesQuerySet for javascriptDjango:为javascript序列化ValuesQuerySet
【发布时间】:2014-06-28 19:56:18
【问题描述】:

我想遍历一个查询集并访问 javascript 中的字段值。

我正在将查询集从视图发送到模板:

render(request, 'home.html', {'data': queryset})

现在我想访问 javascript 中的一些字段。 data 不会发生这种情况,因为它尚未序列化。

我别无选择,只能获取带有相关字段的查询集的序列化版本...

userData = UserDetails.objects.all().values("first_name", "email")
from django.core import serializers
data2 = serializers.serialize('json', userData)

...但我收到以下错误:

AttributeError: 'str' object has no attribute '_meta'

我尝试了Serializing data results from query with select_related into json 此处给出的解决方案,但在 javascript 中我得到以下数据:

"[{"first_name": "pream"}, {"first_name": "micel"}, {"first_name": "Johhy"}, {"first_name": "hraper"}]"

我们将不胜感激任何解决问题的方向。

【问题讨论】:

  • 你试过import jsonjson.dumps(userData)吗?
  • 是的,我试过了,但编码不正确

标签: javascript django


【解决方案1】:

我有一个解决方案:

在视图文件中使用相同的序列化,添加模板上下文并将其传递给模板。

data2 = serializers.serialize('json', userData)
context = { 
        'data2' : data2,
}
return HttpResponse(template.render(context, request))

从您的模板中,从上下文中获取此 json,如下所示,并将使用 '"' 而不是 'quot;' 进行序列化。

scapejs 指令将完成工作

var jsonData = "{{ data2|escapejs }}";

它对我有用。

问候

【讨论】:

    猜你喜欢
    • 2014-08-12
    • 2014-08-14
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多