我正在使用Jinja // Hack to always generate a link for the stream
$photo = null;
$link = $streamItem->getPermalink(false, true);
块来定义一个用户链接,该链接要在以后呈现给页面。但是,当我渲染变量时,所有HTML均被转义,因此显示HTML而不是链接。
{% set %}
查看源代码显示:
{% set user_link %}
<a href="url_for('main.user', username=post.author.username)">
{{ post.author.username }}
</a>
{% endset %}
在页面上显示文字HTML
<a href="/user/exampleuser">
exampleuser
</a>
如何呈现在<a href="/user/exampleuser"> exampleuser </a>
块中定义的链接而不是原始HTML?
答案 0 :(得分:0)
Flask的Jinja环境将自动转义呈现的变量,除非将其标记为安全的。 set
不会将其内容标记为安全,因为它不知道您打算将其用作什么。
定义set
块时可以将其标记为安全。 (这需要Jinja> = 2.10。)
{% set user_link|safe %}
...
{% endset %}
或者您可以标记呈现它时产生安全性的变量。
{{ user_link|safe }}
只需要一个。两者都使用是多余的,但不会破坏任何内容。
答案 1 :(得分:0)
请注意:
href="{{ url_for('main.user', username=post.author.username) }}"
{% set user_link %}
<a href="{{ url_for('main.user', username=post.author.username) }}">
{{ post.author.username }}
</a>
{% endset %}