Доступ к параллельным массивам в шаблонах Django? - PullRequest
5 голосов
/ 14 января 2010

Мой код вида выглядит в основном так:

context = Context() 
context['some_values'] = ['a', 'b', 'c', 'd', 'e', 'f']
context['other_values'] = [4, 8, 15, 16, 23, 42]

Я бы хотел, чтобы код моего шаблона выглядел так:

{% for some in some_values %} 
  {% with index as forloop.counter0 %} 
    {{ some }} : {{ other_values.index }} <br/> 
  {% endwith %} 
{% endfor %} 

И я ожидаю, что это выведет:

a : 4 <br/> 
b : 8 <br/> 
c : 15 <br/> 
d : 16 <br/> 
e : 23 <br/> 
f : 42 <br/> 

Возможно ли это? Я обнаружил, что мое утверждение «с» действительно работает, но затем использование этой переменной в качестве ссылки не работает. Я подозреваю, что для {{other_values.index}} он делает other_values ​​['index'] вместо other_values ​​[index]. Это возможно?

1 Ответ

8 голосов
/ 14 января 2010

zip(some_values, other_values), затем используйте его в шаблоне

from itertools import izip
some_values = ['a', 'b', 'c', 'd', 'e', 'f']
other_values = [4, 8, 15, 16, 23, 42]
context['zipped_values'] = izip(some_values, other_values)

{% for some, other in zipped_values %}
    {{ some }}: {{ other }}  <br/>
{% endfor %}
...