为什么此模板过滤器无效?

时间:2014-12-23 03:11:29

标签: django django-templates django-filter django-template-filters

我在这里做错了什么?

我在位于templatetags目录中的名为accounts_extras.py的模块中有多个数字。在我的模板中,我在顶部有{%load accounts_extras%}。值得注意的是,' upto'目前正在使用另一个模板(尚未在此模板上尝试过),但问题在于数字。 {{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

问题是我在同一个模块中有两个过滤器吗?这是允许的吗?

1 个答案:

答案 0 :(得分:1)

您的过滤器定义很好。问题在于缺少冒号和缩进:

@register.filter
def roundnumber(value):
    if value > 1.75 and value < 2.25: # colon
        return 2 # indentation
    # ...