在谷歌应用引擎

时间:2015-10-08 20:48:45

标签: python google-app-engine svg flask jinja2

我正在从网站上抓取svg html代码。现在我想用该代码渲染模板(它存储在python中的变量中)。 svg代码是来自url-github.com/username/contributions的github的贡献图表。

SVG代码 -

<svg>
.....
</svg>

我无法完成此任务。如何将变量作为参数传递给render_template()函数?在某些格式中,它向我显示实际代码,在其他格式中,它根本不显示任何内容。

1 个答案:

答案 0 :(得分:3)

据我所知,Flask使用JINJA2模板引擎,但同样适用于许多平台上的许多模板引擎。

出于安全原因,默认情况下,代码发送到JINJA2模板的任何HTML数据都将转义,即<svg>将变为&lt;svg&gt; 。这就是它向您展示浏览器中实际代码的原因。

JINJA2允许你不能逃避HTML ,但这可能很危险,特别是如果代码是由用户提供的话。例如,可以将一些邪恶的JavaScript注入您的页面。因此,您最终需要保护您的应用和用户免受此类攻击。

也就是说,不转义HTML标记的其中一个选项是使用safe过滤器。例如:

<div>
{{ svgCode|safe }}
</div>

有关详细信息,请参阅JINJA2文档:http://jinja.pocoo.org/docs/dev/templates/#html-escaping

相关问题