Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как в цикле обратиться к постороннему списку [RSS Feed]

#1 Янв. 26, 2011 13:19:33

Radomir
От:
Зарегистрирован: 2011-01-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в цикле обратиться к постороннему списку

Если есть вывод представлений в виде:

   {% for device in devices %}
<tr>
<td style="background-color: lightgray;">{{device.dev_id}}</td>
......
хочется сделать, чтобы вывод цвета выводился из списка,но как обратиться к нему из этого цикла?
Для каждого device свой набор значений списка colors, т.е. размер списка, например, 10*devices.



Отредактировано (Янв. 26, 2011 13:20:50)

Офлайн

#2 Янв. 26, 2011 14:02:52

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в цикле обратиться к постороннему списку

Radomir, generators? cycle?



Офлайн

#3 Янв. 26, 2011 14:59:37

Radomir
От:
Зарегистрирован: 2011-01-26
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в цикле обратиться к постороннему списку

maxwell
Radomir, generators? cycle?
Это да,
{% for o in some_list %}
<tr class="{% cycle rowvalue1 rowvalue2 %}">
...
</tr>
{% endfor %}
но если
{% for o in some_list %}
<tr class="{% cycle colors %}">
...
</tr>
{% endfor %}
То выходит: No named cycles in template. ‘colors’ is not defined
хотя отдельно список виден.



Отредактировано (Янв. 26, 2011 15:03:20)

Офлайн

#4 Янв. 27, 2011 14:34:56

maxwell
От:
Зарегистрирован: 2008-08-26
Сообщения: 111
Репутация: +  0  -
Профиль   Отправить e-mail  

Как в цикле обратиться к постороннему списку

Radomir, значит делайте свой генератор.

def color_generator():
colors = ['red', 'green', 'blue']
for color in colors:
yield color
c = color_generator()
print c.next()
Но конкретно данный пример будет выпадать с «StopIteration» если «c.next()» будет вызван после вывода «blue».
Иными словами, когда выйдем за границу списка — что отдавать генератор не знает.
Поэтому лучше:
c = cycle(colors)
c.next()
Это про генераторы.

А в Django:
{% cycle 'red' 'green' 'blue' as rowcolors %}
{% for s in stats %}
<div style='color: {% cycle rowcolors %}'>{{ s }}</div>
{% endfor %}



Отредактировано (Янв. 27, 2011 14:57:08)

Офлайн

  • Начало
  • » Django
  • » Как в цикле обратиться к постороннему списку[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version