Найти - Пользователи
Полная версия: Как в цикле обратиться к постороннему списку
Начало » Django » Как в цикле обратиться к постороннему списку
1
Radomir
Если есть вывод представлений в виде:
   {% for device in devices %}
<tr>
<td style="background-color: lightgray;">{{device.dev_id}}</td>
......
хочется сделать, чтобы вывод цвета выводился из списка,но как обратиться к нему из этого цикла?
Для каждого device свой набор значений списка colors, т.е. размер списка, например, 10*devices.
maxwell
Radomir, generators? cycle?
Radomir
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
хотя отдельно список виден.
maxwell
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 %}
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB