Django异常值:无效筛选器错误:
我试图在float中显示除法结果。因此,我刚刚得出结论,过滤器可能会有所帮助,如下所示: 在views.py中:Django异常值:无效筛选器错误:,django,Django,我试图在float中显示除法结果。因此,我刚刚得出结论,过滤器可能会有所帮助,如下所示: 在views.py中: from django import template register = template.Library() @register.filter def div(value, div): return round((value / div) * 5, 2) 在模板中: {% for post in Posts %} {{ post.likes|div:
from django import template
register = template.Library()
@register.filter
def div(value, div):
return round((value / div) * 5, 2)
在模板中:
{% for post in Posts %}
{{ post.likes|div:post.total_like }}
{% endfor %}
{% for post in Posts %}
{{ post.like_ratio }}
{% endfor %}
其中value=post.likes
和div=post.total\u like
但它给出了类似导入错误的东西:
无效筛选器:“div”
我还尝试将div函数/filter放入另一个文件中,如mfilter.py
,并将其导入模板中,如{%load mfilter%}
,但没有成功
更新:
- app
--templates
---app
----mytemplate.html
--admin.py
--mfilteter.py
--forms.py
--views.py
--apps.py
--urls.py
--models.py
模板标记和模板过滤器位于
templatetags/
目录下,因此:
-app
--templates
---app
mytemplate.html
--templatetags/
__init__.py
mfilteter.py
admin.py
forms.py
views.py
apps.py
urls.py
models.py
并在模板中使用此选项:
{% for post in Posts %}
{{ post.likes|div:post.total_like }}
{% endfor %}
{% for post in Posts %}
{{ post.like_ratio }}
{% endfor %}
{%for Posts in Posts%}
{{post.like_ratio}}
{%endfor%}
这通常更好,因为模板不应该实现“业务逻辑”,而应该只实现“呈现逻辑”。通过将其设置为属性,您可以在视图、模型管理员等中使用它。您在
views.py
中不使用它,而是在应用程序的templatetags
目录下使用它。您可以显示应用程序的“文件树”吗?我刚刚更新了问题。不确定这是否是你需要的!templatetags
在哪里您的文件树不包括视图
、mfilter
等?谢谢。我尝试了使用属性,但它给出了以下错误:TypeError:不支持/:'int'和'method'的操作数类型
@ElisaFo:这意味着self.total\u likes
是一个方法?@ElisaFo:然后需要调用该方法,因此self.likes/self.total\u likes()
。