如何在Django Mako模板中显示$ {'None'}?

时间:2012-10-01 22:22:33

标签: python django mako

我正在尝试使用Mako-templates在Django网站上显示可能值列表中的单词(包括“无”,“小”和“更多”)。实际上只渲染了三个单词中的两个。 'None'被解释为None,当我调用$ {variable}时,它被转换为空字符串。

在疑难解答中,我确定在mako模板中实际编写$ {'None'}会向浏览器返回一个空字符串。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

Mako有一个过滤系统,它使用|运算符将转义过滤器应用于${}

没有任何配置默认情况下,Mako会隐式使用unicode过滤器。虽然您始终可以通过设置default_filters参数来更改Mako使用的默认过滤器。

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

因此,默认情况下,Mako ${"None"}呈现为None而不是空字符串。在添加n过滤器时它仅适用于您的事实表明您可能已将default_filters设置为将字符串None转义为空字符串的其他过滤器。 n会修复它,但在使用它之前,您应该进一步深入了解是否已在代码中的某处设置了default_filters

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