2

我正在尝试使用 Mako 模板在 Django 网站上显示可能值列表中的单词(包括“无”、“小”和“更多”)。三个词中只有两个实际呈现。'None' 被解释为 None 并在我调用 ${variable} 时转换为空字符串。

在故障排除中,我确定实际上在 mako 模板中写入 ${'None'} 会向浏览器返回一个空字符串。

有没有办法让 mako 模板打印这个字符串?

谢谢!

4

1 回答 1

3

Mako 有一个过滤器系统,它使用|操作员将转义过滤器应用于${}.

如果没有任何配置,Mako 默认会unicode隐式使用过滤器。尽管您始终可以通过设置default_filters参数来更改 Mako 使用的默认过滤器。

n过滤器禁用所有默认过滤;只有在本地表达式标签中指定的过滤器才会被应用。

所以默认情况下,Mako应该呈现${"None"}None而不是空字符串。它仅在添加过滤器时对您有效,这一事实n表明您可能已将default_filters其他过滤器设置为将字符串转义None为空字符串的过滤器。n会修复它,但在使用它之前,您可能应该进一步挖掘,看看是否default_filters已在代码中的某个位置设置。

警告n过滤器不应正常应用于任何用户(即您网站的用户)输入,因为无转义意味着您容易受到 XSS 等一系列攻击。

于 2012-10-02T19:19:09.420 回答