我在尝试同时在两个维度上迭代模板时遇到了麻烦。
基本情况在这里解释:
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”从1到3进行迭代,我不能在模板中进行:
{{items.fruitstep}}失败并考虑到长点链,这个概念会导致对模板的大量迭代要求。但我找不到一种标准的做法,我不确定它是不错的模板练习。
所以,我创建了一个模板过滤器:
@register.filter
def key2value(collection,key):
try:
return collection[unicode(key)] # It seems that my collection
# keys are in unicode...
except:
return ""
这似乎是一个非常强大的过滤器。它开始是一个非常具体的标签,但我想不出一个不完全通用的理由。
我想知道是否有一种标准的方法可以做到这一点,我已经重新发明了轮子,或者如果这段代码可以做一些可能危及系统的事情。
谢谢!
答案 0 :(得分:0)
不,没有理由不在自己的应用程序中执行此操作。我经常做类似的过滤器,实际上在这里发布了非常相似的代码来回答各种问题。
很难想象提供字典查找会破坏系统的方式。 Django默认情况下不提供此功能,因为最初需要使用受限制的模板语言 - 这个特定的过滤器是否应该从一开始就提供,但是考虑到它不是,它很可能不会被添加现在