2011-03-08 23 views
15

estoy tratando de recorrer un diccionario de diccionario en la página de plantillas de DjangoDjango TemplateSyntaxError No se pudo analizar el resto: '()'

 {% 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 %} 

Pero conseguir el error

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

Cuál es la causa ¿el error?

--update

Éste es cómo crear el 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,    
     } 

Respuesta

37

No es necesario utilizar () para llamar a métodos en las plantillas. Solo puede usar f_values.items. Esta notación funciona para listas, tuplas y funciones:

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

que puede hacer:

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

Así que para su código:

{% 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

¿Qué pasa si la clave tiene espacio en el medio? ¿Qué selector debe usarse para usar esa clave? –

+1

@VishnuYS No hay una solución estándar para una clave con espacios. Intentaría evitar espacios y guiones, pero también puede consultar esta pregunta para algunas soluciones: https://stackoverflow.com/questions/2970244/django-templates-value-of-dictionary-key-with-a-space -en eso –

Cuestiones relacionadas