繁体   English   中英

如何将python / Django列表/字典转换为javascript

[英]How to get python/Django lists/dictionaries into javascript

我想将一些服务器端数据推送到我的JavaScript中,以进行显示。 我有一个可序列化的字典对象的列表,它们表示要在javascript中使用的数据模型的各个部分。 这些对象的定义如下:

event_types = EventType.objects.all()
    et = []
    for t in event_types:
        et.append({'name' : t.name, 'internal_name' : t.internal_name}) # both names are strings

我将它们在上下文变量中推送到模板中,然后尝试将其添加到javascript中:

<script type="text/javascript">
    var event_types = {{event_types}};
</script>

这不起作用,因为我收到“意外令牌'&'”作为JavaScript错误。 然后,我尝试注释掉该代码并查看呈现的内容,这就是我看到的内容:

[{&#39;name&#39;: u&#39;My Event&#39;, &#39;internal_name&#39;: u&#39;my_event&#39;}];

显然,这不是理想的格式。 将服务器端Django数据推送至Javascript的正确方法是什么?

看到的格式是因为传递给模板的对象已使用其repr表示形式转换为字符串,然后对这些字符串进行了html编码(因此,如果它们以文本形式显示在页面上,则可以看到正确的页面上的python repr )。

您想要的是将对象转换为Javascript语法,而不是对其进行进一步编码。

幸运的是,内置的json.dumps会将您的对象转换为JSON。 您还需要关闭该块的转义:

{% autoescape off %}
<script type="text/javascript">
    var event_types = {{event_types}};
</script>
{% endautoescape %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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