[英]Django - serialize models to json for use as JavaScript object
我需要从模型中获取数据作为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中会收到错误消息,
2)即使我使用“ safe”,对象也无法使用,因为它只是一个字符串(例如data.model1 [0]返回“ [”,而不是数组中的第一个元素)。
这样做的正确方法是什么?
您可以使用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}}
麻烦的是,尽管data
值是有效的JSON,但data
本身是Python字典,不能作为JSON有效。
可能最简单的方法是将变量分开:
var data = {
model1: {{ data.model1|safe }},
model2: {{ data.model2|safe }}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.