Django自定义筛选器错误。返回“无效筛选器”

2024-04-20 03:50:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试用Django创建这个自定义过滤器,但我一辈子都不能让它工作。在

在我的templatetags文件夹中,我有文件__init__.py和{},我首先加载静态文件,然后加载templatetags。我试着重新设置服务器,删除和创建文件。在

{% load staticfiles %} {% load alcextra %} 然后扩展到我的主html文件。我试着把它放在主html文件中。在

在alcetra.py我已经写信了

from django import template
register = template.Library()

@register.filter
def multiply(value, arg):
    return value * arg

我试过很多不同的@register版本,比如

@register.filter("multiply", multiply) @register.filter(name="multiply") @register.filter() @register.simple_tag(takes_context=True

并且都返回相同的错误,无效的过滤器:“multiply”。在这一点上,我不知道该做什么或尝试什么。在

Overview of the directory

编辑:有问题的模板。在

^{pr2}$

令人恼火的是,我在另一个项目中尝试了这个方法,但它奏效了。所以我不太确定我做了什么,没有做什么。在

编辑2:

答案是@Alasdair说的。我想我可以在模板中加载过滤器,然后在其他地方使用它,但事实并非如此。在


Tags: 文件djangopyregister模板编辑过滤器value
1条回答
网友
1楼 · 发布于 2024-04-20 03:50:28

它是Django模板语言的documented feature,当您加载自定义标记或筛选器时,它不会自动在子模板中可用。在

您没有在基模板中使用过滤器,因此不需要在那里加载alcextra库。在

然后将load语句添加到使用筛选器的任何子模板中,例如:

{% extends "base.html" %}
{% load alcextra %}
{% block content %}
{{ my_value|multiply:5 }}
{% endblock content %}

相关问题 更多 >