我需要从我的模型中获取数据作为Javascript中的对象。 我在我的JS代码中使用它(“数据”是我的Django视图中返回的上下文的一部分):
var data= {{ data|safe }};
在我看来,我有:
context = {'data': {
'model1': serializers.serialize('json', model1.objects.all()),
'model2': serializers.serialize('json', model2.objects.all()),
}
我遇到的问题是:
1)我在JS中遇到错误,除非我在上下文变量上使用“safe”,
2)即使我使用“safe”,该对象也是不可用的,因为它只是一个字符串(即data.model1 [0]返回“[”而不是数组中的第一个元素。)
这样做的正确方法是什么?
答案 0 :(得分:1)
您可以使用json
模块,解决方案可以是:
import json
data = {
'model1': json.loads(serializers.serialize('json', model1.objects.all())),
'model2': json.loads(serializers.serialize('json', model2.objects.all())),
}
context = {'data': json.dumps(data)}
然后var data = {{data|safe}}
答案 1 :(得分:1)
问题是虽然data
的值是有效的JSON,但data
本身是一个无效的JSON的Python词典。
可能最简单的方法是分离出变量:
var data = {
model1: {{ data.model1|safe }},
model2: {{ data.model2|safe }}
}