django为什么不接受除'cut'以外的其他名称的自定义过滤器?

时间:2018-12-06 07:09:03

标签: django

伙计们,我看到了django的有线问题。我正在尝试创建自己的自定义过滤器,并且仅当我将其命名为“ cut”时,该过滤器才能起作用,但它永远无法与其他任何名称一起使用:

from django import template
register = template.Library()

@register.filter(name='cut')
def removeText(value, arg):
    return value.replace(arg,'')

这就是我在模板中的称呼方式

<h1>{{text|cut:"hello"}}</h1>

这是错误消息,如果我将其重命名为@ register.filter(name ='cut1')

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为您忘记了在模板中加载模板标签过滤器,因为它使用的是Django内置的cut过滤器。

请勿将模板标签命名为与内置标签名称相同。

解决方案

{% load cut1 %}

编辑:您应将包含过滤器功能的文件命名为cut1.py,以将cut1加载到模板中。

答案 1 :(得分:0)

您需要将其定义为模板标记,并在HTML中导入file.py。 模板标记的文档 https://docs.djangoproject.com/en/2.1/howto/custom-template-tags/