3

在将用户生成的文本显示为 html 之前转义用户生成的文本时,有多种方法可以进行一些转换。例如,您可能希望将换行符转换为<br/>、“链接化” url、将空格替换为&nbsp;'s 等。

关于如何进行此类转换的典型建议包括首先转义文本,然后在事后进行适当的替换。例如,https ://stackoverflow.com/a/14795104(那个是针对 Mako 而不是 Jinja2,但他们似乎都使用 markupsafe 进行转义)建议将已经转义的文本传递到函数中,然后调用s.replace("\n", Markup("<br />")). 然而,这些建议似乎有些脆弱——他们假设转义过程不会引入任何要替换的字符,并且在“链接”时效果不佳。例如,如果您首先将 url 转换为链接,然后尝试用&nbsp;'s 替换空格,您可能会得到类似<a&nbsp;href=....

似乎更“正确”的处理方法是转义函数将某种转换函数作为参数,以允许将文本作为转义过程的一部分进行翻译。在 Jinja2 中是否有现有的方法可以做到这一点?

4

0 回答 0