2013-07-03 60 views
0

我是Python Django的新手。Django模板中的動態html元素

我有一個Django的收集對象,如下降序排列CATEGORY_ID的順序,

category_id   name 
1    apple 
1    orange 
2    car 
2    bus 
2    truck 
3    ifosys 
3    wipro 

我怎樣才能<ul></ul>元素中安排每個類別的項目。

預期結果,

<h4>From catgeory 1</h4> 
<ul> 
    <li>apple</li> 
    <li>orange</li> 
</ul> 
<h4>From catgeory 2</h4> 
<ul> 
    <li>car</li> 
    <li>bus</li> 
    <li>truck</li> 
</ul> 
<h4>From catgeory 3</h4> 
<ul> 
    <li>ifosys</li> 
    <li>wipro</li> 
</ul> 

在此先感謝

+0

我很困惑。您可以使用{{variablename}}在模板中輸出變量,或者使用數組或字符串進行循環:https://docs.djangoproject.com/en/dev/ref/templates/builtins/ – bozdoz

+0

您有什麼集合對象? – Babu

回答

0

構建與類別ID作爲鍵和值list您的上下文字典。

{ 
    '1': ["apple", "orange"], 
    '2'" ["car", "bus"], 
    ... 
    ... 
    '8': ["Foo", "Bar"], 
} 

然後在模板中迭代它。模板只是用一些簡單的迭代和過濾器來渲染數據。您不應該使用對象構建或解析來加載模板。

0

如果我正確地理解了這個問題,通過收集Django對象,你的意思是一個QuerySet。然後,如前所述,您需要按category_id對對象進行分組。直接的方法是遍歷查詢集並創建一個字典,在views.py:

grouped_objects = {} 
for obj in obj_collection: 
    if obj.category_id in grouped_objects.keys(): 
     grouped_objects[obj.category_id].append(obj) 
    else: 
     grouped_objects[obj.category_id] = [obj] 

現在grouped_objects快譯通準備通過模板來處理。我不認爲這會是你的整個上下文,所以只是把它作爲一個常規變量來傳遞。那麼你只需要使用基本的迭代標籤:

{% for category, object_list in grouped_objects.items %} 
    <h4>From category {{category}}</h4> 
    <ul> 
    {% for obj in object_list %} 
     <li>{{ obj.name }}</li> 
    {% endfor %} 
    </ul> 
{% endfor %} 

祝你好運!

+0

@mystack對它有幫助嗎? –