2013-04-10 2 views
1

I 플라스 크 프로젝트의 신사 템플릿을 사용하여 다음 루프가 : 그래서 하위 루프를 수행 할 필요가 없습니다 루프의 신사를 최적화 할 수있는 방법이 있나요신사 템플릿 하위 루프 최적화

<select style="width: 125px;" id="ddlQuarters" name="ddlQuarters"> 
    {% for e in element_values if e.DataKey == 'Quarter' %} 
     {% for v in e.DataElementValues | reverse %} 
      <option value="{{ v.DataElementValueId }}">{{ v.Value }}</option> 
     {% endfor %} 
    {% endfor %} 
</select> 

을 내가 원하는 데이터 요소를 얻으려면? 아니면, 또 다른 질문은, 단일 루프에서 다른 모든 속도가가는 한 그것을 할까?

답변

0

보통이 템플릿과 같이 중첩 루프를 피하려고합니다. 컨트롤러/뷰에서이 작업을 수행하고 단일 목록을 작성한 다음 템플리트에 내 목록을 보냅니다.

물론 귀하의 방법은 완벽하게 유효합니다. 성능/속도 문제가 있습니까? 그렇다면 캐싱 전략 (Flask http://pythonhosted.org/Flask-Cache/을 사용하는 경우)을 구현하고 템플릿 내에서 루프를 직접 캐시하는 것이 좋습니다. 예컨대 -이 5 분 동안 루프를 캐시합니다 : 템플릿에 아래로 밀어 넣기 전에

{% cache 60*5 %} 
<select style="width: 125px;" id="ddlQuarters" name="ddlQuarters"> 
    {% for e in element_values if e.DataKey == 'Quarter' %} 
     {% for v in e.DataElementValues | reverse %} 
      <option value="{{ v.DataElementValueId }}">{{ v.Value }}</option> 
     {% endfor %} 
    {% endfor %} 
</select> 
{% endcache %} 

당신이 (위에서 언급 한)보기에 당신의 논리를 이동하기로 결정하는 경우

, 당신은 또한 목록을 캐시 할 수있다.

g