2014-02-25 2 views
4

나는 categories이라는 사전이 있습니다. 그리고 난 그냥 장고 템플릿에서 두 번이 사전을 통해 반복하고 싶다. 다음은 내 코드입니다 :Django 템플릿에서 같은 사전을 여러 번 반복 할 수 있습니까?

<div class="first"> 
    {% for category in categories %} 
    <li class="{{category.name}}"><a href="#{{category.name}}">{{category.name}</a></li> 
    {% endfor %} 
</div> 

<div class="lenDict"> 
    <h2>{{categories|length}}</h2> 
</div> 

<div class="second"> 
    {% for category in categories %} 
      {% for facet in allFacets %} 
       {% if category.name == facet.category %} 
        <p id="{{facet.id}}">{{facet.facet}}</p> 
       {% endif %} 
      {% endfor %} 
    {% endfor %} 
</div> 

내가 같이 잘 작동 first 사업부 아래의 첫 번째 루프를 수행 할 때. 그러나 두 번째 루프 second 아래에 오는 경우 아무런 결과도 얻지 못합니다. lenDict의 코드도 결과가 없습니다.

Django 템플릿에 동일한 사전을 두 번 반복 할 수없는 제한 사항이 있습니까? 도움이 될 것입니다.

+0

이것을 확인하십시오. 'facet.category.lower' 올바른가요? –

+0

코드를 편집 해주세요. – Sakeer

+0

코드 편집을 물어 보지 않았습니다. 제 관심은 카테고리가 패싯의 필드라는 것입니까? '{{facet.facet}} '은 무엇입니까? –

답변

0

그래서 나는 이것이 효과가 있다고 생각합니다. 네 문제가 패싯이라고 생각해. 분류. 이게 fk인가? 이것은 FK 경우 if 문이해야하기 때문에 파이썬의 반복자에

{% if category.id == facet.category %} 

을 재설정 할 필요가 없습니다, 그래서 당신이 tamplate에 반복자를 재설정 할 필요가 있다고 생각하지 않습니다. 참고 : 이것은 코멘트에 남겨 두지 만 담당자는 충분히 높지 않습니다.

1

파이썬에서 dict 전체를 반복하려면 을 사용해야합니다. 그것은 딕셔너리의 (key, value) 쌍 위에 새로운 반복자를 만듭니다. 대신 list 개의 항목을 원하면 items()을 사용할 수도 있습니다.

<div class="first"> 
    {% for key, value in categories.iteritems() %} 
    <li class="{{ key }}"><a href="#{{ key }}">{{ value }}</a></li> 
    {% endfor %} 
</div> 

<div class="lenDict"> 
    <h2>{{ categories|length }}</h2> 
</div> 

<div class="second"> 
    {% for key, value in categories.iteritems() %} 
      {% for facet in allFacets %} 
       {% if key == facet.category %} 
        <p id="{{facet.id}}">{{facet.facet}}</p> 
       {% endif %} 
      {% endfor %} 
    {% endfor %} 
</div> 

귀하의 사전은 순서가 없습니다. 키의 순서를 유지하려면 OrderedDict을 사용하십시오.

관련 문제