2012-08-08 106 views
4

我有一个有序列表,我在Django模板中以2列html表格呈现。在该表中,元素应该输出,使得第一(N + 1)/ 2个元素是在第一列中,而其余的在第二列中,如下所示:在django模板中将列表呈现为2列html表格

<table> 
    <tr> 
    <td>Elem 1</td> 
    <td>Elem 4</td> 
    </tr> 
    <tr> 
    <td>Elem 2</td> 
    <td>Elem 5</td> 
    </tr> 
    <tr> 
    <td>Elem 3</td> 
    <td></td> 
    </tr> 
</table> 

假设我的元素是在{{ elems }}的上下文中,我怎么能在Django模板中合理地完成这项工作?

+0

我认为你将不得不格式/重新安排你的'elems'视图,以便它可以使用这种方式。 – Rohan 2012-08-08 12:42:25

回答

9

检查this recipe。你可能需要修改它,但你会明白。

使用它,在你的模板,你会只是做:

{% for row in elems|columns:2 %} 
<tr> 
    {% for item in row %} 
     <td>{{ item }}</td> 
    {% endfor %} 
</tr> 
{% endfor %} 
+0

很好找。列过滤器看起来像一个完美的适合 – 2012-08-08 17:45:30

+0

我修改了这个片段,按顺序显示项目(从左到右):只需改变这个返回表达式:return [thelist [n * i:n *(i +1)]为我在范围(拆分)]' – julienc 2014-06-08 20:36:51