Django自定义过滤器错误。返回"无效的过滤器"

时间:2017-10-03 22:18:05

标签: python django

我一直在尝试在Django中创建这个自定义过滤器,但我无法让它在我的生活中发挥作用。

在我的templatetags文件夹中我的模板中有文件alcextra.py{% load staticfiles %} {% load alcextra %}我首先加载静态文件然后加载模板标签。我尝试重新设置服务器并再次删除和创建文件。

from django import template register = template.Library() @register.filter def multiply(value, arg): return value * arg 然后将其扩展到我的主html文件。我已经尝试将它放在主html文件中。

在alcextra.py我写过

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

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

<!DOCTYPE html> {% load staticfiles %} {% load alcextra %} <html> <head> <script src="../../static/javascript/jquery-3.2.1.js"></script> <link rel="stylesheet" href="{% static 'css/alcosearch.css' %}" /> <title>Alcosearch</title> <meta charset="utf-8" /> </head> <body> <div class="pageheader"> <h1>Alcosearch</h1> <h3>Vinmonopol søk</h2> </div> <div> {% block content %} {% endblock %} </div> </body> </html>

并且所有返回相同的错误,无效的过滤器:&#39;乘以&#39;。在这一点上,我不知道该做什么或尝试什么。

Overview of the directory

编辑:有问题的模板。

<Route path="/user/:username" component={User}/>

const User = ({ match }) => {
  return <h1>Hello {match.params.username}!</h1>
}

令人讨厌的是我在另一个项目中尝试了这个并且它有效。所以我不完全确定我做了或做过什么。

编辑2:

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

1 个答案:

答案 0 :(得分:4)

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

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

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

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