在javascript中访问python字典

在javascript中访问python字典,javascript,django,django-templates,Javascript,Django,Django Templates,我需要访问django模板中javascript中的字典country_stat。我正在使用GoogleCharts api,其中包含此javascript代码。下面的代码运行良好,可以打印一张整洁的地图。但这些值是静态的 function drawRegionsMap() { var data = google.visualization.arrayToDataTable([ ['Country', 'Popularity'], ['Germany', 2], ['

我需要访问django模板中javascript中的字典country_stat。我正在使用GoogleCharts api,其中包含此javascript代码。下面的代码运行良好,可以打印一张整洁的地图。但这些值是静态的

function drawRegionsMap() {
  var data = google.visualization.arrayToDataTable([
    ['Country', 'Popularity'],
    ['Germany', 2],
    ['United States', 3],
    ['Brazil', 4],
    ['Canada', 5],
    ['France', 6],
    ['RU', 7]
  ]);
在内容块中打印国家统计信息成功

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

India, 2 Russia, 1 

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

通过AJAX请求数据,或者从模板中在javascript中插入文本JSON-在视图中设置上下文变量:

import simplejson as json
context['thingy_json'] = json.dumps(thingy)
然后将该变量包括在模板中:

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

通过AJAX请求数据,或者从模板中在JavaScript中插入文本JSON-在视图中设置上下文变量:

import simplejson as json
context['thingy_json'] = json.dumps(thingy)
然后将该变量包括在模板中:

<script>
    var data = {{ thingy_json }};
</script>
事实上解决了

  var data = google.visualization.arrayToDataTable([
    ['Country', 'Popularity'],
    {% for key, value in country_stat.items %}
    ['{{key}}', {{value}}],
    {% endfor %}
  ]);
这个问题很愚蠢——我错过了{{key}}

周围的单引号,实际上解决了这个问题

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

这个问题很愚蠢-我错过了{{key}}

周围的单引号,您是否考虑过使用django将数据作为json发送给您?这样,您就不必担心将js代码模板化。应该有一种更简单的方法。您是否考虑过使用django将数据作为json发送给您?这样,您就不必担心将js代码模板化。应该有一种更简单的方法。你不必用javascript构建数组,只需将JSON从django传递到javascript即可。虽然它可能适用于你的特定数据集,但你不想这样做。数据中的任何单引号都将破坏您的应用程序。反睫毛会导致奇怪的行为。请参阅Amadan的答案,了解如何干净、省力地完成此操作。您不必用javascript构建数组,只需将JSON从django传递到javascript即可。虽然它可能适用于您的特定数据集,但您不想这样做。数据中的任何单引号都将破坏您的应用程序。反睫毛会导致奇怪的行为。请参阅Amadan的答案,了解如何干净、省力地完成此任务。