Django:自定义模板过滤器

时间:2012-08-06 15:08:21

标签: django templates filter

如何创建一个简单的过滤器来从字典中提取值,如下所示:

PHANTOM_TYPE_CHOICES = (
    (1, 'Type 1'),
    (2, 'Type 2'),
)

适用于django 1.4:

我试过这个:

from django.template import Library    
register = Library() 
    ...

def get(d, key):
    return d.get(key, '')

register.filter(key)

..但它不起作用! (它给我以下错误:'function'对象没有属性'filter')

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你试过了吗?

register.filter('key', get)

答案 1 :(得分:1)

在您的代码示例中,您尝试注册指向方法“key”的过滤器,但方法的名称为“get”

替换

register.filter(key)

register.filter(get)

或使用装饰

@register.filter()
def get(d, key):
    return dict(d).get(key, '')