2012-04-09 179 views
0

我使用金字塔1.3與Mako模板。我有一個名爲「create」的方法,它將一個空字典返回給模板。我打算爲創建和編輯使用相同的「create.mako」模板。我已經把像這樣的上下文變量在我的輸入字段:UNDEFINED mako模板錯誤

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

的問題,這是我得到像下面的錯誤,當我嘗試加載創建方法:

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

這是當然,這是正確的,因爲create方法只返回一個空字典,所以沒有鍵「content」。這在以前的塔0.9.7中很好;如果它不存在,它將只是一個空字符串。

我發現從StackOverflow的一個解決方案:

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

但是,在我把這個在我的金字塔計劃?

回答

2

爲什麼每次都不要將相同的字典返回給模板?這是(畢竟)您的模板的預期輸入。如果您不會默默地忽略問題,它將有助於避免模板中的潛在錯誤。當然,你可以在視圖中抽象這些東西。

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