如何在django模板中放置逗号

时间:2011-06-11 19:11:24

标签: django-templates

我想使用django模板输出以下内容:

Manhattan, NY, USA

使用以下代码:

{{ city }}, {{ state }}, {{ country }}

但有时这些变量中的一个或多个可能是空的。假设状态变量为空,那么输出将如下所示:

Manhattan, , USA

所以我的问题是在不使用多个if语句的情况下处理逗号的最佳方法是什么。

由于

2 个答案:

答案 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时。