如何读取 Javascript 中的 Python 列表 [在 Django 模板中]

How to read Python list in Javascript [in a Django template]

我在 oTree(这是一个基于 Django 的社会实验环境)中编程,我遇到了以下问题。我在 Python 中定义了一些列表,我想导入它们并在 HTML 模板中使用它们。如果我在 HTML 中打印它们,我设法毫无问题地看到它们,但是,一旦我需要在 Javascript 中使用它们,程序就无法读取它们和列表元素的单引号在 ' 中转换。 列表是这样导入的 var filtered_elements = {{ array }};.

我认为问题就出在这里,因为 JS 无法使用它们。你对如何做到这一点有什么建议吗?我考虑过使用 JSON,但由于我对编程还很陌生,所以我不明白这是浪费时间还是有更简单的出路。 感谢您的回答!

听起来您的数据已经是 JSON,否则您将获得单引号和 u 前缀。所以唯一的问题是 Django 自动转义;您可以使用 safe 过滤器禁用它:

var filtered_elements = {{ array|safe }};

你的数据应该是JSON,而不是直接把Python列表放到contact里,而是把"array": json.dumps(array)放到context字典里.

JSON字符串在标签内不需要HTML转义,但需要JS转义!否则一些字符串可能包含类似 </script><script>absolutely anything goes here... 到 运行 的任意内容 JavaScript,如果 JSON 包含用户数据。

所以使用|escapejs:

var filtered_elements = {{ array|escapejs}};