Используя forloop.counter оценивают как индекс списка в шаблоне Django

в моем Django 1.1.1 приложения у меня есть функция в представлении, которое возвращает его шаблону диапазон чисел и список списков объектов, например:

...  
data=[[item1 , item2, item3], [item4, item5, item6], [item7, item8, item9]]  
return render_to_response('page.html', {'data':data, 'cycle':range(0,len(data)-1])

В шаблоне у меня есть внешнее для цикла, который содержит также другого, чтобы цикл отобразил в выводе содержание внутренних списков данных таким образом

...  
{% for page in cycle %}   
...   
< table >   
{% for item in data.forloop.counter0 %}  
< tr >< td >{{item.a}} < /td > < td > {{item.b}} ... < /td > < /tr >  
...  
< /table >  
{% endfor %}  
{% if not forloop.last %}  
< div class="page_break_div" >  
{% endif %}  
{% endfor %}  
... 

Но движок шаблонов Django не работает с forloop.counter0 оцените как индекс за список (вместо этого, он делает, если я вручную поместил числовое значение как индекс). Есть ли способ позволить работам цикла списка с внешним forloop.counter0 значение? Заранее спасибо за справку :)

17
задан Daniel Roseman 23 March 2010 в 16:54
поделиться

1 ответ

Вы не можете использовать переменные для имен атрибутов, ключей словаря или индексов списков.

Также range (0, len (data) -1] недействителен python. Он должен быть range (len (data)) .

Вы, вероятно, не знаете ' Не нужен цикл . Может быть, вам нужно следующее:

{% for itemlist in data %}
    ...
    <table>
        {% for item in itemlist %}
        <tr>
          <td>{{ item.a }}</td>
          <td>{{ item.b }} ... </td>
        </tr>
        ...
        {% endfor %}
    </table>
    {% if not forloop.last %}
        <div class="page_break_div">
    {% endif %}
{% endfor %}
12
ответ дан 30 November 2019 в 12:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: