我一直在尝试在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;。在这一点上,我不知道该做什么或尝试什么。
编辑:有问题的模板。
<Route path="/user/:username" component={User}/>
const User = ({ match }) => {
return <h1>Hello {match.params.username}!</h1>
}
令人讨厌的是我在另一个项目中尝试了这个并且它有效。所以我不完全确定我做了或做过什么。
编辑2:
答案是@Alasdair所说的。我以为我可以在模板中加载过滤器,然后在其他地方使用它,但事实并非如此。
答案 0 :(得分:4)
这是Django模板语言的documented feature,当您加载自定义标记或过滤器时,它不会自动在子模板中使用。
您没有在基本模板中使用过滤器,因此您不需要在那里加载alcextra
库。
然后将load语句添加到使用过滤器的任何子模板,例如:
{% extends "base.html" %}
{% load alcextra %}
{% block content %}
{{ my_value|multiply:5 }}
{% endblock content %}