django自定义模板标签 - 如果是其他条件

时间:2014-11-11 03:16:28

标签: python django date django-templates

我一直试图通过阅读django文档来编写我的第一个django custom template tag

我编写的自定义模板标记包含条件if elseif else条件。

结果总是返回else条件。

这是我的自定义模板代码:

@register.filter(name='replace_date_separator')
def replace_date_separator(value, arg):

if arg is 'fr-CA':
    return value.replace("/", '-')
elif arg is 'de' or arg is 'pl' or arg is 'ru':
    return value.replace("/", '.')
else:
    return value.replace("/", '*')

这是我的模板标签:

{{ voluntary_detail.voluntary_finish_date|date:'m/Y'|replace_date_separator:voluntary_detail.language_version.language_code }}

上面的 voluntary_detail.language_version.language_code 是两个字母的语言代码 - ru,de,en,pl等。

1 个答案:

答案 0 :(得分:4)

您使用的是is关键字which checks for object identity match,因此始终失败。

而是使用==检查是否相等,并执行:

@register.filter(name='replace_date_separator')
def replace_date_separator(value, arg):

    if arg == 'fr-CA':
        return value.replace("/", '-')
    elif arg == 'de' or arg == 'pl' or arg == 'ru':
        return value.replace("/", '.')
    else:
        return value.replace("/", '*')

另外,您可以将elif语句简化为elif arg in ('de', 'pl', 'ru'):