django模板将数组转换为HTML表

时间:2012-02-22 01:46:45

标签: django django-templates

我有16个结果列表,我们称之为“结果”。我想把它们安排在4 x 4的桌子里。

使用django模板,我该怎么做? (看起来周期不会对我有帮助)

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

谢谢!

3 个答案:

答案 0 :(得分:20)

您可以使用cycle标记。

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

会输出类似......

的内容
<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>

答案 1 :(得分:12)

你需要建立这样的东西

<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>

如果您有这样一个数组(实际上是字典)

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

有很多这样做。这是最直接的方式。查看Django模板标签文档。

这是我在整个过程中学到的技术列表。还有更多,但我没有时间记录所有这些。 http://binarybugs01.appspot.com/entry/template-iteration-techniques

有时您必须小心传递给模板的上下文字典。 如果你传递这个

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

您正在迭代result.result,密钥为result.result.name


我还想提醒你,你要么有一个列表,一个集合,一个字典或一个元组。但是你可以导入数组并使用它。

答案 2 :(得分:2)

假设您拥有:
results=[[1, 2, 3, 4,], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

以下模板可用于在表格中显示结果:

<table>
  {% for rowval in results %}    
     <tr>
     {% for val in rowval %}
      <td>{{val}}</td>
     {% endfor %}
    </tr>
  {% endfor %}
</table> 

它将显示:

1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16