2012-08-08 125 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