40
 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}))

How can I access a value of t in Django templates without using a for loop? I have tried the following and it doesn't seem to work:

    alert('{{t[a]}}');
    alert('{{t[c]}}');
Null
  • 1,950
  • 9
  • 30
  • 33
Rajeev
  • 44,985
  • 76
  • 186
  • 285
  • Theres an error in your code assigning values to t. Currently it fails with TypeError, so we can't be sure what the *real* structure of t is, so we can't help you. Copy-Paste your view code to prevent these mistakes. – Ofri Raviv Mar 07 '11 at 12:02

2 Answers2

68

Assuming your view code is:

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

(and not as stated in the OP)

{{ t.0.0 }} is like t[0][0] in Python code. This should give you "a", because t.0 is the first element of the list t, which itself is a tuple, and then another .0 is the tuple's first element.

{{ t.0.1 }} will be 1, and so on.

But in your question you are creating a tuple and trying to access it as if it is a dict.

That's the problem.

tamizhgeek
  • 1,371
  • 3
  • 13
  • 25
Ofri Raviv
  • 24,375
  • 3
  • 55
  • 55
6

You can convert your tuple to dict via dict() function:

mydict = dict(t)

And then in template you can access items by key like here:

{{ mydict|get_item:item.NAME }}
Community
  • 1
  • 1