我在尝试在两个维度上同时迭代模板时遇到了问题。幽灵自定义模板过滤器?
基本情况说明如下:
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 2010-08-12 20:47:51