【问题标题】:accessing a python dictionary in javascript在 javascript 中访问 python 字典
【发布时间】:2012-05-20 17:45:48
【问题描述】:

我需要在 django 模板中的 javascript 中访问字典 (country_stat)。我正在使用具有此 javascript 代码的谷歌图表 api。下面的代码运行良好并打印出一张整洁的地图。但是这些值是静态的。

function drawRegionsMap() {
  var data = google.visualization.arrayToDataTable([
    ['Country', 'Popularity'],
    ['Germany', 2],
    ['United States', 3],
    ['Brazil', 4],
    ['Canada', 5],
    ['France', 6],
    ['RU', 7]
  ]);

在内容块中打印 country_stat 成功。

{% for key, value in country_stat.items %}
{{key}}, {{value}}
{% endfor %}

打印,

India, 2 Russia, 1 

但我不知道如何将其插入到 javascript 代码中。

【问题讨论】:

  • 您考虑过使用 django 将数据作为 json 发送给您吗?这样,您就不必担心模板化您的 js 代码
  • 没有。应该有更简单的方法。

标签: javascript django django-templates


【解决方案1】:

要么通过 AJAX 请求数据,要么从模板中在 JavaScript 中下载文字 JSON - 在视图中设置上下文变量:

import simplejson as json
context['thingy_json'] = json.dumps(thingy)

然后将该变量包含在您的模板中:

<script>
    var data = {{ thingy_json }};
</script>

【讨论】:

    【解决方案2】:

    确实解决了。

      var data = google.visualization.arrayToDataTable([
        ['Country', 'Popularity'],
        {% for key, value in country_stat.items %}
        ['{{key}}', {{value}}],
        {% endfor %}
      ]);
    

    问题很愚蠢 - 我错过了 {{key}} 周围的单引号

    【讨论】:

    • 您不必在 javascript 中构建数组,只需将 JSON 从 django 传递给 javascript。
    • 虽然它可能适用于您的特定数据集,但您不想这样做。数据中的任何单引号都会破坏您的应用程序。反斜杠会引发奇怪的行为。请参阅 Amadan 的回答,了解如何以更少的努力干净利落地做到这一点。
    猜你喜欢
    • 2014-04-14
    • 2021-11-09
    • 2021-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-31
    • 1970-01-01
    相关资源
    最近更新 更多