Answers:
理想的方法是
{{ something|safe }}
而不是完全关闭自动转义。
userHome.html
,并且我想使用return render_template('userHome.html')
,但它无法正确呈现,并且在chrome控制台中全部转为html实体。
trans
标记中,这必须用作{% trans something=something|safe %}A {{something}} B{% endtrans %}
您还可以从代码中将其声明为HTML安全的:
from flask import Markup
value = Markup('<strong>The HTML String</strong>')
然后将该值传递给模板,而他们不必这样做|safe
。
从jinja docs部分HTML Escaping:
启用自动转义后,默认情况下所有内容都将转义,除非明确标记为安全的值。可以通过应用程序或使用安全过滤器在模板中对其进行标记。
例:
<div class="info">
{{data.email_content|safe}}
</div>
有些人似乎关闭了自动转义功能,这会带来安全风险,可能会影响字符串显示。
如果您只想在字符串中插入一些换行符并将其转换为<br />
,则可以使用jinja宏,例如:
{% macro linebreaks_for_string( the_string ) -%}
{% if the_string %}
{% for line in the_string.split('\n') %}
<br />
{{ line }}
{% endfor %}
{% else %}
{{ the_string }}
{% endif %}
{%- endmacro %}
在您的模板中只需使用
{{ linebreaks_for_string( my_string_in_a_variable ) }}