2012-02-22 16 views
6

Tengo una lista de 16 resultados, llamémosle "resultados". Quiero organizarlos en una mesa de 4 x 4.plantilla django convertir matriz en tabla HTML

Usando la plantilla django, ¿cómo puedo hacer esto? (No parece que el ciclo me ayudaría aquí)

<table> 
{% for r in results %} 
...? 
{% endfor %} 
</table> 

Thanks !!

Respuesta

16

Puede usar la etiqueta cycle para esto.

<table> 
    {% for r in results %} 
    {% cycle '<tr>' '' '' '' %} 
     <td>{{r.content}}</td> 
    {% cycle '' '' '' '</tr>' %} 
    {% endfor %} 
</table> 

emitiría algo así como ...

<table> 
    <tr> 
    <td>result 1</td> 
    <td>result 2</td> 
    <td>result 3</td> 
    <td>result 4</td> 
    </tr> 
    <tr> 
    <td>result 5</td> 
    <td>result 6</td> 
    <td>result 7</td> 
    <td>result 8</td> 
    </tr> 
    <!-- etc --> 
</table> 
+0

Buen truco. Ahora estoy guardando esto. ¡Aprendiendo algo nuevo! – CppLearner

+0

Gracias, funciona justo como lo necesito. lo aprecio. –

7

Es necesario construir algo como esto

<table> 
<tr> 
    <th>header1</th> 
    <th>header2</th> 
    <th>header3</th> 
    <th>header4</th> 
</tr> 
{% for r in result %} 
<tr> 
    <th> {{ result.name }}</th> 
    <th> {{ result.address }}</th> 
    <th> {{ result.time }}</th> 
    <th> {{ result.date }}</th> 
</tr> 
{% endfor %} 
</table> 

siempre y cuando tenga una matriz (en realidad, un diccionario) de esta manera

result['name'] 
result['address'] 
result['time'] 
result['date'] 
return render_to_response("my_template.html", {'result:result'}) 

Hay una serie de hacerlo. Esta es la forma más directa. Mire la documentación de la etiqueta de la plantilla de Django.

Aquí hay una lista de las técnicas que aprendí durante todo el proceso. Hay más, pero no tengo tiempo para documentarlos todos. http://binarybugs01.appspot.com/entry/template-iteration-techniques

A veces hay que tener cuidado con el diccionario de contexto que está pasando a la plantilla. Si estás pasando este

result = {'name': 'John', 'time': '12/2/2012'....etc} 
context['result'] = result 
return render_to_response("my_template.html", context} 

Usted está interactuando sobre result.result y las claves se result.result.name


También quiero recordarle que tampoco tiene una lista, un conjunto, un diccionario, o una tupla. Sin embargo, puedes importar una matriz y usarla.

+4

no result.name creo que es r.name y R.Time, r.address, r.date {% para r en consecuencia% } {{}} result.name {{}} result.address {{}} result.time {{result.date}} {% endfor%} – zabusa