未定义的mako模板错误

时间:2012-04-09 06:23:06

标签: pyramid mako

我正在使用带有Mako Templating的Pyramid 1.3。我有一个名为“create”的方法的视图,它将空字典返回给模板。我打算使用相同的“create.mako”模板进行创建和编辑。我在我的输入字段中放置了类似的上下文变量:

<input type="text" id="nameInput" value="${content['name']}" />

这个问题是当我尝试加载create方法时出现如下错误:

<input id="nameInput" value="${content['name']}" type="text" class="span8" style="background-color: #EED3D7;" />
TypeError: 'Undefined' object is unsubscriptable

这当然是正确的,因为create方法只返回一个空字典,所以没有键“content”。这在Pylons 0.9.7中曾经很好;如果它不存在,它只是一个空字符串。

我从StackOverflow找到了一个解决方案:

import mako.runtime
mako.runtime.UNDEFINED = ''

但是我在哪里把它放在我的Pyramid项目中?

1 个答案:

答案 0 :(得分:2)

为什么不每次都将相同的dict返回给模板?这毕竟是模板的预期输入。如果您不默默地忽略问题,它将真正有助于避免模板中的潜在错误。当然,您可以跨视图抽象这些内容。

def _create_tmpl(name='', ...):
    return {
        'name': name,
    }

def create_view(request):
    return _create_tmpl()

def edit_view(request):
    return _create_tmpl(name='Mark')

无论如何,如果你真的真的想要,你可以添加到你的设置(可能在你的INI中)mako.strict_undefined = false