gpt4 book ai didi

python - 跨度元素未将 ' 替换为撇号

转载 作者:太空宇宙 更新时间:2023-11-04 04:40:04 24 4
gpt4 key购买 nike

我正在将文本传递到 code mirror通过 jinja2 在 javascript 中的文本编辑器库元素。

code = `{% for line in file_content%}{{ line }}\n{% endfor %}`

//CODE MIRROR
var editor = CodeMirror(document.getElementById('code_editor'), {
value: code,
mode: 'python',
theme: 'neo'
});

如果 file_content 设置为一些 Python 代码,例如 ["self._tophash = ''"] 那么这将生成以下 HTML 元素:

<div id='code_editor'>
<span role="presentation" style="padding-right: 0.1px;">
self._tophash = &amp;#39;&amp;#39;
</span>
</div>

虽然当它打印到屏幕时 HTML 显示为 ' 而不是 '

有人知道为什么会这样吗?

最佳答案

Jinja2 总是 HTML escape anything you insert into a document .这包括转义引号字符,因为这些字符可用于“破坏”HTML 属性,从而使您的网站遭受跨脚本攻击。

您必须明确地将数据标记为“安全”:

code = `{% for line in file_content%}{{ line|safe }}\n{% endfor %}`

就我个人而言,我会将数据插入为 JSON:

code = {{ file_content|join('\n')|tojson }};

JSON(几乎完全)是 Javascript 的一个子集; Jinja2 tojson filter的方式将 Python 数据编码为 JSON 保证与 Javascript 兼容。

如果您使用的是 Jinja2 版本 older than 2.10 (Flask 1.0 的最小版本),您仍然必须将结果标记为安全,但这在这里很好,因为您不会生成插入 HTML 元素或属性的数据。

关于python - 跨度元素未将 ' 替换为撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com