【问题标题】:Django - serialize models to json for use as JavaScript objectDjango - 将模型序列化为 json 以用作 JavaScript 对象
【发布时间】:2017-06-20 14:12:33
【问题描述】:

我需要从我的模型中获取数据作为 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) 即使我使用“安全”,该对象也无法使用,因为它只是一个字符串(即 data.model1[0] 返回“[”而不是数组中的第一个元素)。

这样做的正确方法是什么?

【问题讨论】:

    标签: javascript json django


    【解决方案1】:

    问题在于,虽然data 是有效的JSON,但data 本身是一个Python dict,它不像JSON 那样有效。

    可能最简单的方法是分离变量:

    var data = {
        model1: {{ data.model1|safe }},
        model2: {{ data.model2|safe }}
    }
    

    【讨论】:

      【解决方案2】:

      您可以使用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}}

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-13
        • 1970-01-01
        • 2011-09-23
        • 1970-01-01
        • 2021-11-24
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多