2

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

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

4

2 回答 2

6

您的数据应该是 JSON,而不是直接将 Python 列表放入联系人中,而是放入"array": json.dumps(array)上下文字典中。

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

所以使用|escapejs

var filtered_elements = {{ array|escapejs}};
于 2017-01-16T14:34:26.480 回答
6

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

var filtered_elements = {{ array|safe }};
于 2017-01-16T14:29:55.687 回答