в моем 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
значение? Заранее спасибо за справку :)
Вы не можете использовать переменные для имен атрибутов, ключей словаря или индексов списков.
Также 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 %}