有多种方法可以在将用户生成的文本显示为html之前进行转换时进行一些转换。例如,有人可能希望将换行符转换为<br/>
,“linkify”网址,用
替换空格等。
如何进行此类转换的典型建议包括首先转义文本,然后在事后进行适当的替换。例如,https://stackoverflow.com/a/14795104(一个用于Mako而不是Jinja2,但它们似乎都使用markupsafe进行转义)建议将已经转义的文本传递给函数,然后调用s.replace("\n", Markup("<br />"))
。然而,这些建议似乎有点脆弱 - 他们认为逃避过程不会引入任何要替换的角色,并且在“链接”时它们不能很好地工作。例如,如果您首先将网址转换为链接,然后尝试将空格替换为
,则可能会使用<a href=...
之类的内容。
似乎更“正确”的处理方式是转义函数将某种转换函数作为参数,以允许文本作为转义过程的一部分进行转换。在Jinja2中是否有现成的方法?