2013-08-07 89 views
0

動態成型可變我有一個項目像在Django模板

{'Switch_all': 'N/A', 'Router_down': 'N/A', 'Switch_down': 'N/A', 'Router_all': 'N/A'} 

一本字典,我想通過使用密鑰前遍歷該字典中Django模板:Switch_all。

我能夠從字典中獲取數據,如果我給喜歡Switch_all

問題的關鍵是,我需要從另一個列表中動態地形成這個變量。對於實例列表將包含以下數據

['Swich','Router'] 

我不得不遍歷這個列表,並追加像_up,_down字符串形成新的變量,在字典中的關鍵之一。

現在我已經通過使用自定義模板過濾器嘗試,我還是發現難以傳遞兩個參數

,我包括在模板的代碼是

{{ value|dyndictval:header,"_up" }} 

在上面的代碼值是dictionary和header是一個變量,它接受像Switch,Router這樣的參數,並且當附加第二個參數(這裏是'_up')時,它將在字典(值)中形成關鍵字。

定製過濾器代碼是

def dyndictval(d, key1): 
keys = key1.split(',') 
return d.get(keys[0]+keys[1],'') 

我已通過使用與標籤使用創建一個單獨的變量,如下克服這一要求和所使用的相同的參數傳遞給自定義過濾器

{% with header|add:"_up" as templatevar %}>>>>{{templatevar}}<<<< 
        {{ value|dyndictval:templatevar }} 
        {% endwith %} 
+0

這種處理應該在視圖中完成;不是模板。 –

+0

感謝您的評論。我試圖用自定義標籤做它仍然有一些問題。我有一個方法def dyndictval(d,key1): print'dyndictval調試<<<<<<<<<<<<<<<<<<<<<<<<<',key1 return d.get (key1,''),當我試圖調用{{value | dyndictval:header,「_ up」}}從模板失敗 – Balachandar

回答

0

這應該在視圖中完成。該模板只能包含最少的邏輯。

在視圖中可以很容易地使用python完成。如果你需要幫助發佈你的代碼作爲編輯問題,人們會提供幫助。

+0

嗨,我修改了我所做的更改後的帖子。我使用自定義過濾器。它仍然失敗,因爲它不可能通過一個以上的紀念碑。任何關於此的幫助對我都有用 – Balachandar

+1

我已經克服了我遇到的問題,並且我已經編輯過發佈以添加我修復它的詳細信息 – Balachandar