【问题标题】:Escaping string and then adding html tags in jinja转义字符串,然后在 jinja 中添加 html 标签
【发布时间】:2016-05-16 07:19:45
【问题描述】:

我有一个要转义的字符串,然后在 jinja 中打印之前只添加特定的 html 标签。这就是我想要做的:

{{ user.info | e | nl2br | safe  }}

所以本质上我想将新行转换为<br/>,但转义用户提供的每个 html 标记。这似乎不起作用,<br/> 标签也被转义了。我怎样才能在 Jinja 中实现这种行为?

【问题讨论】:

  • 如果您删除 | safe 过滤器 - {{ user.info | e | nl2br }} 是否有效?
  • 不,它给了我相同的结果。显然安全和逃生不能在相同的上下文中工作。

标签: python jinja2


【解决方案1】:

好的,我找到了解决方案,似乎 escape 实际上返回了一个 Markup 对象,因此对其调用 safe 没有帮助。我必须定义一个自定义过滤器:

@app.template_filter('escape_custom')
def escape_custom(string):
    string = str(jinja2.escape(string))
    return jinja2.Markup(string.replace('\n', '<br/>\n'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-11
    • 1970-01-01
    • 2014-12-24
    • 1970-01-01
    相关资源
    最近更新 更多