0

我正在关注自定义 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 function register.filter('cut', cut),没有错误,并且 filter 实际运行?这里到底发生了什么?

4

1 回答 1

0

已经有一个内置过滤器cut

您的问题是,如果参数不是字符串,它将失败。内置版本大概会在调用之前转换为字符串replace()。改用那个。

于 2013-03-04T22:36:01.023 回答