我正在使用 Django 为项目创建基于 Web 的应用程序,并且遇到了将数组从 Django 视图返回到模板的问题。
JavaScript (JQuery) 脚本将使用该数组在页面中显示的图像上绘制框。因此,除其他外,该数组将具有要绘制的框的坐标。
这是 Django 视图中用于获取所需数据并将其序列化为 JSON 的代码:
def annotate(request, ...):
...
oldAnnotations = lastFrame.videoannotation_set.filter(ParentVideoLabel=label)
tags = serializers.serialize("json", oldAnnotations)
...
return render_to_response('vannotate.html', {'tags': tags, ...})
作为一种调试方式,{{ tags }}
在模板的 HTML 部分中使用会将其作为输出(对不起,很长的一行):
[{"pk": 491, "model": "va.videoannotation", "fields": {"ParentVideoFile": 4, "ParentVideoFrame": 201, "ParentVideoLabel": 4, "top": 220, "height": 30, "width": 30, "ParentVideoSequence": 16, "left": 242}}, {"pk": 492, "model": "va.videoannotation", "fields": {"ParentVideoFile": 4, "ParentVideoFrame": 201, "ParentVideoLabel": 4, "top": 218, "height": 30, "width": 30, "ParentVideoSequence": 16, "left": 307}}]
我认为这是 JSON 数组的正确格式。
稍后在模板中,我尝试在模板tags
的 JavaScript 部分中实际使用该变量,如下所示:
{% if tags %}
var tagbs = {{ tags|safe }};
var tgs = JSON.parse(tagbs);
alert("done");
{% endif %}
如果我删除该var tgs = JSON.parse(tagbs);
行,则会弹出警告框,并且 JavaScript 的其余部分按预期工作。然而,留下这一行会破坏脚本。
我希望能够遍历 Django 模型中的所有对象并获取 JavaScript 中字段的值。
我不确定我在这里做错了什么,有人可以指出正确的方法吗?