У меня возникли проблемы при попытке выполнить итерацию шаблона в двух измерениях одновременно.
Основная ситуация объясняется здесь:
http://www.djangobook.com/en/2.0/chapter04/ (в яблоках, пример банановых индексов)
>>> from django.template import Template, Context
>>> t = Template('Item 2 is {{ items.2 }}.')
>>> c = Context({'items': ['apples', 'bananas', 'carrots']})
>>> t.render(c)
u'Item 2 is carrots.'
Если бы я хотел повторить от 1 до 3 этого с переменной "fruitstep", я не могу сделать это в шаблоне:
{{items.fruitstep}} терпит неудачу и, учитывая длинные цепочки точек, эта концепция приведет к огромным итерационным требованиям к шаблону.Но я не смог найти стандартный способ сделать это, и я не уверен, что это хорошая практика шаблонов.
Итак, я создал фильтр шаблонов:
@register.filter
def key2value(collection,key):
try:
return collection[unicode(key)] # It seems that my collection
# keys are in unicode...
except:
return ""
Это похоже начрезвычайно мощный фильтр.Сначала это был очень специфический тег, но я не мог придумать причину, по которой он не был бы полностью общим.
Мне интересно, есть ли стандартный способ сделать это, и я заново изобрел колесо, или этот код может сделать что-то, что может поставить под угрозу систему.
Спасибо!