2012-03-12 3 views
4

내 장고 응용 프로그램에서 관련 매개 변수와 자바 스크립트의 변수 세트를 생성하려면 루프 변수 내가 루프에 대한 중첩 된 두 가지가 있습니다 {% empty %}가 발생하면장고 템플릿 태그 {{}/빈에 대한}

<script> 
{% for model in models %} 
    {% for item in model.attribute|slice:":3" %} 
     {% if forloop.first %} 
      var js_variable{{ forloop.parentloop.counter0 }} = [ 
     {% endif %} 
      '{{ item.attribute }}' , 
     {% if forloop.last %} 
      {{ item.attribute }} ] 
    {% empty %} 
     var js_variable{{ forloop.parentloop.counter0 }} = [] 
    {% endfor %} 
{% endfor %} 

....code that gets unhappy when js_variable[n] doesn't exist..... 

</script> 

는 아무튼 {{ forloop.parentloop. counter0 }} 변수에 대한 액세스 권한이있는 것 같아서 변수 이름 js_variable[n]이 (카운터에서 제공하지 않는 번호는 없음)으로 잘못 인쇄되고 나중에 코드가 불만을 나타냅니다.

이 변수는 {{ empty }} 태그에서 사용할 수 없습니까?

답변

6

이것은 예상되는 동작입니다. 단순화 :

{% for A ... %} 
    {{ forloop.* }} is there for the 'for A ...' 

    {% for B ... %} 
     {{ forloop.* }} is there for the 'for B ...' 
     {{ forloop.parentloop.* }} refers to the 'for A ...' 
    {% empty %} 
     {{ forloop.* }} is there for the 'for A ...' !!! 
    {% endfor %} 
{% endfor %} 

{{forloop}}은 (는) forloop! 변경 :와

var js_variable{{ forloop.parentloop.counter0 }} = [] 

:

var js_variable{{ forloop.counter0 }} = [] 
+0

감사합니다! 10 분이 지나면 곧 받아 들일 것입니다. – mrmagooey

+0

내부의 forloop 변수가 빈 경우에는 존재하지 않는다는 것을 알지 못했습니다. 빈 환상의 파이썬 시퀀스 유형이라고 상상해보십시오. – mrmagooey

+0

아하하, 내 덕분에 xD를 만들었 어. – jpic