我正在尝试使用Mako-templates在Django网站上显示可能值列表中的单词(包括“无”,“小”和“更多”)。实际上只渲染了三个单词中的两个。 'None'被解释为None,当我调用$ {variable}时,它被转换为空字符串。
在疑难解答中,我确定在mako模板中实际编写$ {'None'}会向浏览器返回一个空字符串。
有没有办法让mako模板打印这个字符串?
谢谢!
答案 0 :(得分:2)
Mako有一个过滤系统,它使用|
运算符将转义过滤器应用于${}
。
没有任何配置默认情况下,Mako会隐式使用unicode
过滤器。虽然您始终可以通过设置default_filters
参数来更改Mako使用的默认过滤器。
n
filter禁用所有默认过滤;只应用本地表达式标签中指定的过滤器。
因此,默认情况下,Mako 应将${"None"}
呈现为None
而不是空字符串。在添加n
过滤器时它仅适用于您的事实表明您可能已将default_filters
设置为将字符串None
转义为空字符串的其他过滤器。 n
会修复它,但在使用它之前,您应该进一步深入了解是否已在代码中的某处设置了default_filters
。
警告:n
过滤器不应该正常应用于任何用户(您网站的用户)输入,因为无法转义意味着您容易受到一系列诸如XSS之类的攻击。