如何正确应用Django/jinja2模板过滤器“escape”和“linebreaks”?

2024-06-08 03:41:54 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用django模板过滤器转义一个变量,如下所示。 我使用jinja2模板引擎,而不是django的主要模板引擎

{{ my_variable|escape|linebreaks }}

带有换行符的字符串的输出如下所示:

^{pr2}$

理想情况下

<br />

不应转义,因为它是由“linebreaks”筛选器添加的。没有带有原始字符串的html标记。在

我试过:

{{ my_variable|linebreaks|escape }}

但结果更糟:

<p>Lorem ipsum <br /> dolor sit amet <br />rg srg</p>
<p>gs rgsr rsg serg<br />r srg</p>

有人知道我在应用模板过滤器时是否做错了什么,以及/或是否能够为我指出正确的方向?在

谢谢。在


Tags: django字符串引擎br模板过滤器jinja2my
2条回答

那么您在jinja2模板中使用django的linebreaks过滤器?在这种情况下,我假设django标记字符串安全的方式可能与jinja2不兼容,因此转义django添加的标记(如果autoescape处于活动状态)。在

如果你把jinja2的安全过滤器加到最后呢?在

{{ my_variable|escape|linebreaks|safe }}

另外,在jinja2文档中有一个定制过滤器的例子,它看起来类似于django的换行符。 http://jinja.pocoo.org/docs/api/#custom-filters

^{pr2}$

我真傻,看来我可以用:

{{ my_variable|forceescape|linebreaks }}

强制首先应用“escape”筛选器。 默认情况下,“escape”只适用于所有其他过滤器的末尾,而不管位置如何,因此force_escape是另一个最简单的替代方法。在

相关问题 更多 >

    热门问题