동시에 두 차원의 템플릿에서 반복을 시도하는 데 문제가있었습니다.으시시 사용자 정의 템플릿 필터?
기본 상황은 여기에 설명 :
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.'
내가 변수 "fruitstep"이에 3 1에서 반복하고 싶었 , 템플릿에서이 작업을 수행 할 수 없습니다.
{{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