将 JSON 从烧瓶传递到模板并解码 html 实体 [重复]

Posted

技术标签:

【中文标题】将 JSON 从烧瓶传递到模板并解码 html 实体 [重复]【英文标题】:Pass JSON from flask to template and decode html entity [duplicate] 【发布时间】:2016-07-03 23:55:12 【问题描述】:

所以我已经坚持了一段时间。我有一个 MongoDB,我查询并以 JSON 形式返回。

我这样做是:

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

然后我将它传递给一个烧瓶模板变量,以便在 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 正确解析,因为它包含 &amp;#34; 这是双引号的实体值,但如果我检查源代码,它不应该看起来像这样。 html 页面不应该将其显示为"。这只发生在脚本部分。不在&lt;p&gt; 标记中(将所有&amp;#34; 打印为")。

我误会了什么?

【问题讨论】:

【参考方案1】:

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

要告诉烧瓶不要逃避东西,请使用results_json | safe。那是您断言该值是安全的,而不是告诉烧瓶使其安全(这是它之前所做的)。

【讨论】:

非常感谢。我已经被困在这个问题上太久了! 非常感谢!

以上是关于将 JSON 从烧瓶传递到模板并解码 html 实体 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Pandas 数据框到烧瓶模板作为 json [重复]

从请求中检索帖子数据的烧瓶速度很慢?

如何使用 Jinja2 模板在烧瓶中解码 &#39 [重复]

将参数从Javascript传递到烧瓶python脚本[重复]

烧瓶从自动完成传递选定的值并执行 SQL 查询以打印结果

如何使用 flask_pymongo 将数据从 mongodb 显示到烧瓶模板?