在mako文件中将\n转换为<br>

Joe*_*ons 4 python pylons mako

我正在使用python和pylons

我想在mako文件中显示textarea中保存的数据,新行格式正确显示

这是最好的方式吗?

> ${c.info['about_me'].replace("\n", "<br />") | n}
Run Code Online (Sandbox Code Playgroud)

mad*_*jar 5

您的解决方案的问题是您绕过字符串转义,这可能导致安全问题.这是我的解决方案:

<%! import markupsafe %>
${text.replace('\n', markupsafe.Markup('<br />'))}
Run Code Online (Sandbox Code Playgroud)

或者,如果您想多次使用它:

<%!
    import markupsafe
    def br(text):
        return text.replace('\n', markupsafe.Markup('<br />'))
%>
${text | br }
Run Code Online (Sandbox Code Playgroud)

此解决方案使用markupsafe,用于mako标记安全字符串并知道要逃脱的字符串.我们只标记<br/>为安全,而不是字符串的其余部分,因此如果需要它将被转义.