我正在为Flask和SQLAlchemy构建一个管理员,我想使用render_template
将不同输入的超文本标记语言传递给我的视图。模板框架似乎会自动转义HTML,因此所有<"'>
字符都会转换为HTML实体。如何禁用它才能正确地呈现HTML?
发布于 2010-07-09 01:48:15
若要在渲染值时关闭自动转义,请使用|safe
过滤器。
{{ something|safe }}
只对您信任的数据执行此操作,因为呈现不受信任的数据而不进行转义是一个跨站点脚本漏洞。
发布于 2010-07-17 00:00:19
MarkupSafe提供了Jinja的自动转义行为。您可以导入Markup
并使用它从代码中声明一个HTML safe值:
from markupsafe import Markup
value = Markup('<strong>The HTML String</strong>')
把它传递给模板,你就不必对它使用|safe
过滤器了。
发布于 2019-06-28 21:16:47
当你有很多不需要转义的变量时,你可以使用autoescape
override块:
{% autoescape false %}
{{ something }}
{{ something_else }}
<b>{{ something_important }}</b>
{% endautoescape %}
https://stackoverflow.com/questions/3206344
复制相似问题