如何在Mako运行时环境中优雅地处理NameError和AttributeError?

时间:2011-09-09 18:21:19

标签: python templates template-engine mako

我发现尝试访问Mako模板中的未定义变量会引发NameError,而且逻辑上也是如此。然而,在某些应用程序中,希望更优雅地失败,可能用空字符串替换此类错误(AttributeError是另一个候选者)。这是Django模板语言中的默认行为。有没有办法在Mako中获得这种行为?

1 个答案:

答案 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

然后我们走了。谢谢,谷歌。