2013-10-10 3 views
1

하나의 페이지에만 해당하는 큰 메시지 집합이 있습니다. 새 메시지를 추가하는 것을 단순화하기 위해 (큰 숫자는 단기간에 더 커질 것입니다.), 각 항목에 대해 항목이있는 거대한 if/elif 블록을 방지하기 위해, 다음과 같은 관련 템플릿을 모두 포함하는 방법이 필요했습니다. 새로운 메시지가 추가 될 때마다 템플릿을 업데이트해야합니다. 내 생각에도 템플릿을 포함하는 메시지를 나타내는 dict에 대한 것이 었습니다.다른 템플릿을 포함하도록 Mako 템플릿을 동적으로 설정하십시오.

TypeError: 'NoneType' object has no attribute '__getitem__' 
  1. 그것을 확인 할 수 있습니까 템플릿 변수를 사용 태그를 포함 할 수 있는지 여부 :

    <div class="item-content" id="results_content"> 
        <ul class="unstyled"> 
        %for msg in c.page_messages: 
         <%include file="${msg.get('template_path')}" args="message=msg"/> 
        %endfor 
        </ul> 
    </div> 
    

    이것은 %에서 오류가 발생 태그를 포함한다 : 이것은 그렇게 나의 시도였다 , 나는 이것이 작동하기를 기대해야한다면 어느쪽으로 든 특별한 언급이없는 것을 발견 할 수 없다.

  2. 이것이 효과가있는 것이 아니라면 같은 것을 성취 할 수있는 또 다른 방법이 있습니까? ie - 각 메시지 템플릿을 가져 오는이 템플릿 코드를 수정하지 않고 새 메시지를 추가 할 수 있습니다.

답변

4

설명하는 방식으로 포함 태그 내에서 변수를 사용할 수있는 것처럼 보입니다. From the docs :

All tags have a set of attributes which are defined for each tag. Some of these attributes 
are required. Also, many attributes support evaluation, meaning you can embed an  
expression (using ${}) inside the attribute text: 

<%include file="/foo/bar/${myfile}.txt"/> 

내 생각 엔 c.page_messages이 시점에서 사전의 반복 가능한되지 않는 것입니다.