2012-04-09 2 views
0

저는 Mako Templating과 함께 Pyramid 1.3을 사용하고 있습니다. 빈 사전을 템플릿에 반환하는 "create"라는 메서드가있는 뷰가 있습니다. 나는 창조와 편집 모두에 대해 동일한 "create.mako"템플릿을 사용하려고합니다. 내 입력 필드에 같은 같은 맥락 변수를 넣어했습니다정의되지 않음 mako templating error

<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"가 없기 때문입니다. 이것은 Pylons 0.9.7에서 잘 사용되었습니다. 그것이 존재하지 않는다면 단지 빈 문자열 일 것입니다.

는 I에 유래에서 해결책을 발견 :

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') 

어쨌든, 당신은 정말 정말 정말, 당신은 단지 mako.strict_undefined = false (아마 당신의 INI에서) 설정에 추가 할 수있는 것인지.