2011-03-08 95 views
15

我試圖遍歷詞典的詞典在Django模板頁面Django的TemplateSyntaxError無法解析餘數爲:「()」

 {% for (key_o, value_o) in f_values.items() %} 
      <tr class="row {% cycle 'odd' 'even' %}"> 
       {% for (key_i, val_i) in value_o.items() %} 
        <td class="tile "> 
         {{ val_i }} 
        </td> 
       {% endfor %}  
      </tr> 
     {% endfor %} 

但得到的錯誤

TemplateSyntaxError at /tree/branches/ 
Could not parse the remainder: '()' from 'f_values.items()' 

是什麼原因造成錯誤?

--update

這是我如何創建f_values

 columnValues = [] 
     for idx_o, val_o in enumerate(results['values']): 
      columnValues[idx_o] = {} 
      for idx_i, val_i in enumerate(val_o): 
       columnValues[idx_o][idx_i] = {} 
       columnValues[idx_o][idx_i]['value'] = val_i 
       name = columnNames[idx_i] 
       columnValues[idx_o][idx_i]['name'] = name 
       columnValues[idx_o][idx_i]['format'] = {} 
       for val_f in formats: 
        if (name == val_f.Header) : 
         columnValues[idx_o][idx_i]['format']['LowerLimit'] = val_f.LowerLimit 



data = { 
     'f_values': columnValues,    
     } 

回答

37

你並不需要使用()調用模板的方法。您只能使用f_values.items。這種表示法適用於列表,元組和功能:

lst = ['a', 'b', 'c'] 
di = {'a': 'a'} 
class Foo: 
    def bar(self): pass 

你可以這樣做:

{{ lst.0 }} 
{{ di.a }} 
{{ foo.bar }} 

因此,對於你的代碼:

{% for (key_o, value_o) in f_values.items %} 
     <tr class="row {% cycle 'odd' 'even' %}"> 
      {% for (key_i, val_i) in value_o.items %} 
       <td class="tile "> 
        {{ val_i }} 
       </td> 
      {% endfor %}  
     </tr> 
    {% endfor %} 
+0

如果什麼鍵有空間之間?需要使用哪個選擇器來使用該密鑰? – 2017-06-30 07:45:22

+1

@VishnuYS沒有空格鍵的標準解決方案。我會盡量避免空格和連字符,但你也可以檢查一下這個問題的一些解決方法:https://stackoverflow.com/questions/2970244/django-templates-value-of-dictionary-key-with-a-space -在裏面 – 2017-07-01 08:40:58