У меня возникли проблемы с попыткой итерации по шаблону на двух измерениях одновременно.Spooky Custom Template Filter?
Основная ситуация объясняется здесь:
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 ""
Это кажется очень мощный фильтр. Это начало быть очень специфическим тегом, но я не мог придумать причины, чтобы не сделать его полностью общим.
Мне интересно, есть ли стандартный способ сделать это, и я изобрел колесо, или если этот код может сделать что-то, что может поставить под угрозу систему.
Спасибо!
Я понимаю, что проблема безопасности связана с тем, что все, что вернулось, является безопасным для HTML. Я считаю, что, не изменяя никаких значений по умолчанию, он избежит возвращенной информации, но с таким фильтром было бы невозможно проверить, что элементы в коллекции безопасны ... – iJames