【问题标题】:Rendering svg from flask in google app engine从谷歌应用引擎中的烧瓶渲染svg
【发布时间】:2016-01-06 15:50:12
【问题描述】:
我正在从网站上抓取 svg html 代码。现在我想用该代码(存储在 python 的变量中)呈现模板。 svg 代码是 github 的贡献图,来自 url - github.com/username/contributions。
SVG 代码 -
<svg>
.....
</svg>
我无法完成这项任务。如何将变量作为参数传递给 render_template() 函数?在某些格式中,它向我显示实际代码,在其他格式中,它根本不显示任何东西。
【问题讨论】:
标签:
python
google-app-engine
svg
flask
jinja2
【解决方案1】:
据我所知,Flask 使用 JINJA2 模板引擎,但同样适用于许多平台上的许多模板引擎。
出于安全原因,默认情况下,您的代码发送到 JINJA2 模板的任何 HTML 数据都将被转义,即 &lt;svg&gt; 将变为 &lt;svg&gt;。这就是它在浏览器中向您显示实际代码的原因。
JINJA2 允许您不转义 HTML,但这可能很危险,尤其是如果代码是由用户提供的。例如,一些邪恶的 JavaScript 可能会被注入到您的页面中。因此,您最终需要保护您的应用和用户免受此类攻击。
也就是说,不转义 HTML 标记的选项之一是使用 safe 过滤器。例如:
<div>
{{ svgCode|safe }}
</div>
有关更多信息,请参阅 JINJA2 文档:http://jinja.pocoo.org/docs/dev/templates/#html-escaping