如何解决“'mathfilter'标签'addition'在复制django项目后停止工作”错误?
Posted
技术标签:
【中文标题】如何解决“\'mathfilter\'标签\'addition\'在复制django项目后停止工作”错误?【英文标题】:How do I resolve the "'mathfilter' tag 'addition' stopped working since replicating django project" error?如何解决“'mathfilter'标签'addition'在复制django项目后停止工作”错误? 【发布时间】:2017-08-22 04:15:35 【问题描述】:最近我将一个 Django 项目移到了一个新的虚拟环境中。一切似乎都正常,除了以下错误:
TemplateSyntaxError at /profile/
Invalid filter: 'addition'
Request Method: GET
Request URL: http://example.com/example/
Django Version: 1.9.12
Exception Type: TemplateSyntaxError
Exception Value:
Invalid filter: 'addition'
Exception Location: /opt/example/local/lib/python2.7/site-packages/django/template/base.py in parse, line 516
Python Executable: /usr/local/bin/uwsgi
Python Version: 2.7.3
我把它缩小到这行代码:
% with deeb_percent=stat.deeb_base|addition:stat.deeb_deal %
进一步调查,我发现:https://github.com/dbrgn/django-mathfilters,似乎“addition”是一个自定义过滤器,它是 mathfilters 的一部分。我链接的文档说要运行:
pip install django-mathfilters
我已经检查了 pip freeze,并安装了 mathfilters。
appdirs==1.4.3
backports.ssl-match-hostname==3.5.0.1
beautifulsoup4==4.5.3
Django==1.9.12
django-appconf==1.0.1
django-autocomplete-light==3.2.1
django-compat==1.0.8
django-compressor==1.6
django-dual-authentication==1.0.0
django-hijack==2.0.1
django-htmlmin==0.8.0
django-ipware==1.1.2
django-mathfilters==0.3.0
django-modelcluster==3.0.1
django-taggit==0.22.0
django-treebeard==4.1.0
django-widget-tweaks==1.4.1
djangorestframework==3.6.2
html5lib==0.9999999
packaging==16.8
Pillow==3.0.0
pyparsing==2.2.0
pytz==2015.7
requests==2.13.0
simplejson==3.10.0
six==1.10.0
slackclient==1.0.5
Unidecode==0.4.20
wagtail==1.9
websocket-client==0.40.0
Willow==0.4
然后将数学过滤器添加到您的 INSTALLED_APPS。
我还检查了项目settings.py
中的 INSTALLED_APPS 并且还加载了 mathfilters:
INSTALLED_APPS = [
...
'mathfilters',
...
]
在有问题的模板顶部加载了“mathfilters”:
% extends "base.html" %
% load i18n %
% load static %
% load extra %
% load mathfilters %
如果我将模板中的“添加”更改为“添加”,则模板可以正常工作。
% with deeb_percent=stat.deeb_base|addition:stat.deeb_deal %
但我不想为多个地方的每个模板都这样做,而且因为我将项目安装在新的 virtualenv 中,所以我也不愿意让这个“损坏”。
为什么数学过滤器不起作用?我该如何解决这个错误?
【问题讨论】:
【参考方案1】:https://github.com/dbrgn/django-mathfilters
addition – 替换 add 过滤器,支持 float / 十进制类型
将 mathfilter 更新到 0.4.0,一切都会恢复正常
【讨论】:
辛苦了,非常感谢。非常感激。知道为什么 3 不起作用吗? 他们只是在 0.4 中更改了函数名称。 0.3 中不存在“加法” 啊,谢谢,如果原始开发人员更新了 requirements.txt,那就太好了!再次感谢【参考方案2】:对于 Python 3,只需使用 a|add:b
【讨论】:
以上是关于如何解决“'mathfilter'标签'addition'在复制django项目后停止工作”错误?的主要内容,如果未能解决你的问题,请参考以下文章