将 JSON 从 Flask 传递到模板并解码 html 实体

tri*_*k96 3 html python json character-encoding flask

所以我已经被困在这个问题上有一段时间了。我有一个 MongoDB,我查询并以 JSON 形式返回。

我这样做是通过:

bson.json_utils.dumps(list(all_exams.find(query))
Run Code Online (Sandbox Code Playgroud)

然后,我将其传递到 Flask 模板变量中,以便在 HTML 中的内联 js 脚本中使用。

<div id="results">
  <table id="results-table">
  </table>
  <p>
     {{results_json}}
  </p>

</div>


<script type="text/javascript" charset="utf-8">
$('#results-table').dynatable({
dataset: {
  records: {{results_json}}
}
});
</script>
Run Code Online (Sandbox Code Playgroud)

问题是,在脚本中,JSON 无法正确地通过可表示来解析,因为它包含&#34;That is the 实体值 双引号,但如果我检查源代码,它不应该出现这样的情况。html 页面不应该将其显示为". 这仅发生在脚本部分。不在标签中(将所有内容<p>打印为)。&#34;"

我有什么误解吗?

Ale*_*all 5

为了避免 XSS 攻击,flask 和其他模板语言默认转义值:它转换"为 HTML 实体,以便浏览器将其读取为要显示给人类的文本,而不是 HTML 语法的一部分(例如<a href="...">)。这种情况发生在所有标签中:在标签内,<p>您可以在浏览器中看到引用,但源代码仍然是实体。

要告诉 Flask 不要转义内容,请使用{{results_json | safe}}. 这是你断言该值是安全的,而不是告诉flask使其安全(这是它之前所做的)。