繁体   English   中英

Django-将模型序列化为json以用作JavaScript对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM