Django 自定义过滤器错误。返回“无效过滤器”
Posted
技术标签:
【中文标题】Django 自定义过滤器错误。返回“无效过滤器”【英文标题】:Django custom filter error. Returns "invalid filter" 【发布时间】:2018-03-15 05:18:28 【问题描述】:我一直在尝试在 Django 中创建这个自定义过滤器,但我一辈子都无法让它发挥作用。
在我的模板标签文件夹中,我的模板中有文件__init__.py
和alcextra.py
,我首先加载静态文件,然后加载模板标签。我已尝试重置服务器并再次删除和创建文件。
% load staticfiles % % load alcextra %
然后将其扩展到我的主 html 文件。我已经尝试将它放在主 html 文件中。
在 alcextra.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
编辑:有问题的模板。
<!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>
令人讨厌的是,我在另一个项目中尝试过这个并且它成功了。所以我不完全确定我做了什么或没做什么。
编辑 2:
答案是@Alasdair 所说的。我以为我可以在模板中加载过滤器,然后在其他地方使用它,但事实并非如此。
【问题讨论】:
请出示您的模板。 【参考方案1】:这是 Django 模板语言的documented feature,当您加载自定义标签或过滤器时,它不会自动在子模板中可用。
您没有在基本模板中使用过滤器,因此您不需要在那里加载alcextra
库。
然后将加载语句添加到任何使用过滤器的子模板中,例如:
% extends "base.html" %
% load alcextra %
% block content %
my_value|multiply:5
% endblock content %
【讨论】:
以上是关于Django 自定义过滤器错误。返回“无效过滤器”的主要内容,如果未能解决你的问题,请参考以下文章
使用 templatetags 方法的 Django 自定义过滤器不起作用!异常值为:无效过滤器:'dict_'