python - 将 JSON 从 flask 传递到模板并解码 html 实体

标签 python html json flask character-encoding

<分区>

所以我一直坚持这个。我有一个 MongoDB,我查询并以 JSON 形式返回。

我通过以下方式做到这一点:

bson.json_utils.dumps(list(all_exams.find(query))

然后我将它传递到一个 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>

问题是在脚本中,JSON 不能被 denotable 正确解析,因为它包含 &#34;这是双引号的实体值,但如果我检查源代码,它不应该看起来像那样。 html页面不应该将其显示为"吗? .这只发生在脚本部分。不在<p>标记(将所有 &#34; 打印为 " )。

我误会了什么?

最佳答案

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

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

关于python - 将 JSON 从 flask 传递到模板并解码 html 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38175365/

相关文章:

python - 单元测试记录结果文件

python - OpenCV:将特定 BGR 值的所有像素设置为另一个 BGR 值

iphone - 在 iphone 中解析字符串 json 值?

Java String.valueOf 返回空字符串

python - `python` 中的加权高斯核密度估计

python - 如何在python中为列表的每个元素添加固定键?

html - 在 ipad safari 上强制输入和选择框向下(而不是向上)打开

html - 使用 sprite 图像作为列表

javascript - 如何将换行符从 HTML div 复制到 jQuery 中的文本区域?

python - 接收 CSV 文件的脚本仅显示最后一行