我一直试图通过阅读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等。
答案 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'):