2011-11-10 93 views
1

在我的views.py我得到5個字符,它們都是類似於{date:value} 所有5個字符都具有相同的長度,在我的模板中,我想獲得一些url基於這些類型的字典,與普通字段爲日期 - 因爲你會在SQL查詢基於一個公共列加入5級表時做django模板訪問字典值基於密鑰

在Python中,你會做這樣的事情:

for key, value in loc.items(): 
    print key, loc[key], ctg[key], sctg[key], title[key], id[key] 

但在Django模板所有我能想出是這樣的:

{% for lock, locv in loc.items %} 
    {% for ctgk, ctgv in ctg.items %} 
     {% for subctgk, subctgv in subctg.items %} 
      {% for titlek, titlev in titlu.items %} 
       {% for idk, idv in id.items %} 

          {% ifequal lock ctgk %} 
          {% ifequal ctgk subctgk %} 
           {% ifequal subctgk titlek %} 
            {% ifequal titlek idk %} 

            <br />{{ lock|date:"d b H:i" }} - {{ locv }} - {{ ctgv }} - {{ subctgv }} - {{ titlev }} - {{idv }} 
            .... {% endifequals & endfors %} 

這當然是醜陋的,並採取了大量的時間來進行渲染

現在我期待到建立一個自定義的標籤,但我想知道,如果你們有關於這個主題的反饋?

+0

使用自定義標籤似乎對我更好。也許Jinja2可以幫助你,但我不知道那個... –

+0

我創建了一個自定義標籤,它做了一個dict.get(key),這正是我需要的模板! – marlboro

回答

0

聽起來好像是你需要使用比對準http://stardict.sourceforge.net/Dictionaries.php下載其他東西。如何小班的字典,其中包含你想要的東西:使你的模板代碼少一點痛苦

class MyThing: 
    def __init__(self, loc, ctg, sctg, title, id): 
    self.loc = loc 
    self.ctg = ctg 
    self.sctg = sctg 
    self.title = title 
    self.id = id 

會? (道歉,如果我誤解了這個問題 - 我很難跟着你的嵌套if!)。

+0

瞭解IFS認爲約5類型的字典具有這些值:{1: 'A',2: 'B',3: 'C',4: 'd',5: 'X',6: 'AA'} 和ifs允許打印出dict1 [1] dict2 [1] .. dict5 [1] 和dict1 [2] dict2 [2] .. dict5 [2]等 – marlboro

+0

感謝您的想法,但我創建了一個自定義標籤,這使得奇蹟:) – marlboro

0

Django模板應儘快解決與點變量字典查找(如果varaible是一個字典)。所以ctg.key等於ctg[key]。您是否嘗試過:

{% for key, value in loc.items %} 
    {{ key|date:"d b H:i" }} - {{ value }} - {{ ctg.key }} - {{ subctg.key }} - {{ title.key }} - {{ id.key }} 
+0

不,它不工作...最好的事情是創建一個標籤或過濾器,根據您的需要...我創建了一個標籤,但現在我想通過過濾器會更好 – marlboro