en mi aplicación Django 1.1.1 Tengo una función en la vista que devuelve a su plantilla un rango de números y una lista de listas de elementos, por ejemplo :Utilizando forloop.counter value como índice de lista en una plantilla de Django
...
data=[[item1 , item2, item3], [item4, item5, item6], [item7, item8, item9]]
return render_to_response('page.html', {'data':data, 'cycle':range(0,len(data)-1])
Dentro de la plantilla tengo una externa para el bucle, que contiene también otro para el ciclo que se mostrará en la salida contiene una de las listas internas de datos de esta manera
...
{% 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 %}
...
Pero Django el motor de plantilla no funciona con el valor forloop.counter0
como índice para t lista (en cambio sí lo hace si coloco manualmente un valor numérico como índice). ¿Hay alguna manera de dejar que el bucle de lista funcione con el valor externo forloop.counter0
? Gracias de antemano por la ayuda :)
Gracias Stefanw, es exactamente lo que estaba tratando de hacer, no pensé en iterar sobre la lista porque en el caso de 'len (data) == 1' (sí, el uno que escribí antes no era una buena declaración de Python) Tuve que mostrar la salida de la lista de una manera diferente. De todos modos ahora parece que todo está funcionando, ¡gracias de nuevo por tu ayuda! – Alex
Esta es definitivamente la forma correcta de hacerlo, pero [aquí] (http://stackoverflow.com/a/11784863/456848) es cómo trabajo alrededor de "sin variables como nombres de atributos, claves de diccionario o índices de listas" problema. No es elegante estar seguro, pero lo hace al usar etiquetas y filtros integrados. –