我想使用django模板输出以下内容:
Manhattan, NY, USA
使用以下代码:
{{ city }}, {{ state }}, {{ country }}
但有时这些变量中的一个或多个可能是空的。假设状态变量为空,那么输出将如下所示:
Manhattan, , USA
所以我的问题是在不使用多个if语句的情况下处理逗号的最佳方法是什么。
由于
答案 0 :(得分:2)
可能有一个模板过滤器来实现这一点,但我不知道它。因此,我会编写自己的模板过滤器,在我的值的末尾添加一个字符串。它会像这样使用:
{{ city|suffix:", " }}{{ state|suffix:", " }}{{ country }}
有关创建自定义模板过滤器的信息,请参阅Django文档:
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/
您的模板过滤器看起来像这样:
from django import template
register = template.Library()
@register.filter(name='suffix')
@stringfilter
def suffix(value, arg):
"Suffixes a string with the argument, only if the string is not empty"
if value:
return value + arg
return value
虽然只有在始终提供country
时才会有效。
答案 1 :(得分:0)
您可以将所有变量放在列表中,并使用连接过滤器或带有单个if语句的for循环。虽然这些解决方案中的任何一个都会影响模板的清晰度和可读性,但我更倾向于在这种情况下使用if语句,尤其是在逗号分隔项之间涉及更复杂的HTML时。