我发现尝试访问Mako模板中的未定义变量会引发NameError
,而且逻辑上也是如此。然而,在某些应用程序中,希望更优雅地失败,可能用空字符串替换此类错误(AttributeError
是另一个候选者)。这是Django模板语言中的默认行为。有没有办法在Mako中获得这种行为?
答案 0 :(得分:11)
嗯,结果是更多的谷歌搜索makes it plain:
import mako.runtime
mako.runtime.UNDEFINED = ''
现在未定义的变量将产生空字符串。
阅读UNDEFINED原始值的来源是有启发性的:
class Undefined(object):
"""Represents an undefined value in a template.
All template modules have a constant value
``UNDEFINED`` present which is an instance of this
object.
"""
def __str__(self):
raise NameError("Undefined")
def __nonzero__(self):
return False
然后我们走了。谢谢,谷歌。