【发布时间】:2015-02-21 04:39:39
【问题描述】:
我在这里做错了什么?
我在 templatetags 目录中名为 accounts_extras.py 的模块中有roundnumber。在我的模板中,顶部有 {% load accounts_extras %}。还值得注意的是,“upto”目前正在另一个模板中工作(尚未在此模板上尝试过),但问题出在 roundnumber 上。 {{ staravg.stars__avg|roundnumber }} 给了我一个无效的过滤器错误。
#accounts_extras.py
from django import template
from django.template.defaultfilters import stringfilter
register = template.Library()
@register.filter
@stringfilter
def upto(value, delimiter=None):
return value.split(delimiter)[0]
upto.is_safe = True
@register.filter
def roundnumber(value):
if value > 1.75 and value < 2.25
return 2
if value > 2.25 and value < 2.75
return 2.5
if value > 2.75 and value < 3.25
return 3
if value > 3.25 and value < 3.75
return 3.5
if value > 3.75 and value < 4.25
return 4
问题是我在同一个模块中有两个过滤器吗?允许吗?
【问题讨论】:
-
roundnumber有很多语法错误,请先修复它们。另外,value > 1.75 and value < 2.25可以写成1.75 < value < 2.25 -
如果您知道您的输入值将始终介于 1.75 和 4.25 之间,那么您的
roundnumber函数可以重写为return 0.5 * math.ceil(value * 2)如果不是,那么您可以存储这个值,如果它超出了2 和 4 你可以返回任何你想要的东西。
标签: django django-templates django-filter django-template-filters