django自定义过滤器只能在没有注册的情况下工作?

时间:2013-03-04 22:24:06

标签: django django-templates

我正在关注自定义django过滤器的教程,实际上无法解释发生了什么。这是模板中的代码。

{% load filters %}
{{ entry.language|cut:"blabla" }

这是过滤器

from django import template

register = template.Library()

def cut(value, arg):
    return value.replace(arg, '')

register.filter('cut', cut)

奇怪的是,我收到了这个错误

AttributeError
'Language' object has no attribute 'replace'

但如果我删除寄存器过滤器函数register.filter('cut', cut),则没有错误,过滤器实际运行?这里到底发生了什么?

1 个答案:

答案 0 :(得分:0)

已有内置过滤器cut

你的问题是,如果参数不是字符串,它将失败。在调用replace()之前,内置版本可能会转换为字符串。请改用它。