Шаблоны Django - итерация по диапазону - PullRequest
1 голос
/ 12 января 2012

Намерение

В моем шаблоне Django я создаю ссылку для каждой буквы в алфавите и каждой цифры 1-9 для ссылки на страницу индекса.

В коде Python этокак это будет выглядеть:

for ch in map(chr, range(97, 123)) + range(1,10):
    print '<a href="/indexpage/{0}/">{0}</a>'.format(ch)

Но я хочу сделать это в шаблоне Django, поэтому я не могу напрямую использовать функции карты / диапазона.

Неудачные попытки

Сначала я подумал о создании тега шаблона, который возвращает список буквенно-цифровых символов, а затем зацикливание его в шаблоне, но это не работает, так как это тег, а не переменная контекста.

Templatetag:

@register.simple_tag
def alnumrange():
    return map(chr, range(97, 123)) + range(1,10)

Шаблон:

{% for ch in alnumrange %}
    <a href="/indexpage/{{ch}}/">{{ch}}</a>
{% endfor %}

Я думал, что это может работать при использовании тега with, но он тоже не работает.

Далеемысли

  • Я не могу установить контекст в представлении, поскольку это базовый шаблон, который я расширяю.
  • Я не хочу добавлять процессор контекста, так как я используюэтот диапазон только в одном шаблоне.

Есть ли способ превратить вывод шаблона тега вк переменной контекста, по которой я могу перебрать?Или есть другой способ решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 12 января 2012

Проверьте этот тег шаблона: Тег диапазона шаблона . Вы должны быть в состоянии расширить его для обработки символов.

2 голосов
/ 12 января 2012

Вам нужен тег включения здесь. Просто передайте свой диапазон в контексте и визуализируйте его, как вам нравится. Это дает вам гибкую и модульную структуру.

...