У меня был тот же вопрос, но потом у меня был момент «духа». Вместо записи
x ~ y
напишите
y ~ x
Очевидно, что это соответствует «x» вместо «y», но отвечает «есть ли совпадение?». вопрос и простой обход DOM могут привести вас к правильному элементу более эффективно, чем цикл в javascript.
Я понимаю, что исходный вопрос был вопросом CSS, поэтому этот ответ, вероятно, совершенно не имеет значения, но другие пользователи Javascript могут споткнуться на вопрос через поиск, как я.
Вы можете передать привязку
{'n' : range(n) }
к шаблон, затем выполните
{% for i in n %}
...
{% endfor %}
Обратите внимание, что вы получите поведение на основе 0 (0, 1, ... n-1).
(Обновлено для совместимости с Python3)
К сожалению, этот не поддерживается в языке шаблонов Django. Есть пара из предложений , но они кажутся немного сложными. Я бы просто поместил переменную в контекст:
...
render_to_response('foo.html', {..., 'range': range(10), ...}, ...)
...
и в шаблон:
{% for i in range %}
...
{% endfor %}
На случай, если кто-нибудь еще столкнется с этим вопросом ... Я создал тег шаблона, который позволяет вам создать диапазон (...)
: http://www.djangosnippets.org/snippets/1926/
Accepts the same arguments as the 'range' builtin and creates a list containing the result of 'range'. Syntax: {% mkrange [start,] stop[, step] as context_name %} For example: {% mkrange 5 10 2 as some_range %} {% for i in some_range %} {{ i }}: Something I want to repeat\n {% endfor %} Produces: 5: Something I want to repeat 7: Something I want to repeat 9: Something I want to repeat