2011-03-07 18 views
16
t=[] 
t.append(("a",1)) 
t.append(("b",2)) 
t.append(("c",3)) 
return render_to_response(t.html, context_instance=RequestContext(request, {'t':t})) 

si quiero el acceso el acceso de un valor de t en las plantillas de Django sin necesidad de utilizar un bucle for ¿cómo puedo hacer it.I han intentado lo siguiente y es imposible parecen funcionartupla acceso en plantillas de Django

alert('{{t[a]}}'); 
    alert('{{t[c]}}'); 
+0

Theres un error en el código de asignación de valores a t . Actualmente falla con TypeError, por lo que no podemos estar seguros de cuál es la estructura * real * de t, así que no podemos ayudarlo. Copiar y pegar el código de vista para evitar estos errores. –

+0

Lo he corregido – Rajeev

Respuesta

32

Asumiendo que su código de la vista es:

t=[] 
t.extend([('a',1),('b',2),('c',3)]) 

(y no como se indica en el OP)

es como {{ t.0.0 }}t[0][0] en código Python. Esto debería darle "a", porque t.0 es el primer elemento de la lista t, que a su vez es una tupla, y luego otro .0 es el primer elemento de la tupla.

{{ t.0.1 }} será 1, y así sucesivamente.

Pero en tu pregunta estás creando una tupla e intentando acceder a ella como si fuera un dict.

Ese es el problema.

+0

no podemos acceder a los valores de las teclas a saber, a, b, c ?? – Rajeev

+0

Puede, pero tendrá que hacer una dicción: t = {'a': 1, 'b': 2, 'c': 3}, entonces t.a debería funcionar. –

2

Puede convertir su tupla a dict través dict() function:

mydict = dict(t) 

Y luego, en la plantilla se puede acceder a los elementos de clave, como here:

{{ mydict|get_item:item.NAME }}