我正在尝试使用 Mako 模板在 Django 网站上显示可能值列表中的单词(包括“无”、“小”和“更多”)。三个词中只有两个实际呈现。'None' 被解释为 None 并在我调用 ${variable} 时转换为空字符串。
在故障排除中,我确定实际上在 mako 模板中写入 ${'None'} 会向浏览器返回一个空字符串。
有没有办法让 mako 模板打印这个字符串?
谢谢!
Mako 有一个过滤器系统,它使用|
操作员将转义过滤器应用于${}
.
如果没有任何配置,Mako 默认会unicode
隐式使用过滤器。尽管您始终可以通过设置default_filters
参数来更改 Mako 使用的默认过滤器。
该n
过滤器禁用所有默认过滤;只有在本地表达式标签中指定的过滤器才会被应用。
所以默认情况下,Mako应该呈现${"None"}
为None
而不是空字符串。它仅在添加过滤器时对您有效,这一事实n
表明您可能已将default_filters
其他过滤器设置为将字符串转义None
为空字符串的过滤器。n
会修复它,但在使用它之前,您可能应该进一步挖掘,看看是否default_filters
已在代码中的某个位置设置。
警告:n
过滤器不应正常应用于任何用户(即您网站的用户)输入,因为无转义意味着您容易受到 XSS 等一系列攻击。