【问题标题】:UNDEFINED mako templating error未定义的 mako 模板错误
【发布时间】:2012-04-21 14:51:38
【问题描述】:

我正在使用带有 Mako 模板的 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 项目的什么地方呢?

【问题讨论】:

    标签: pyramid mako


    【解决方案1】:

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

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 2013-05-25
      • 2021-12-20
      • 2017-03-26
      • 2015-03-18
      • 1970-01-01
      • 2015-10-11
      相关资源
      最近更新 更多