Django模板过滤器,用于创建以逗号连接并以"和"结尾的项目列表

jac*_*zil 4 django django-templates

我觉得我正在写一些应该存在的东西.

Django是否有一个模板过滤器,它连接逗号和地方的项目列表以及最后一个之前的'和'?

例如:

a = ['foo',]
b = ['bar', 'baz',]
c = a + b
d = c + ['yourmom',]
Run Code Online (Sandbox Code Playgroud)

我正在寻找的过滤器将以下列方式显示每个列表:

a会显示'foo'.
b会显示'bar和baz'.
c会显示'foo,bar和baz'.
d会显示'foo,bar,baz和yourmom'.

问题1:有什么东西可以做到吗?


我试着自己写这个,它在两个地方打破:

我的代码:http: //pastie.org/private/fhtvg5tchtwlnrdyuoyeja

问题2:它打破了forloop.counter和tc.author.all |长度.请解释为什么这些无效.

dol*_*a33 15

您可以在模板中执行此操作:

{% for item in list %}
    {% if forloop.first %}{% else %}
        {% if forloop.last %} and {% else %}, {% endif %}
    {% endif %}{{item}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)


为清晰起见添加了换行符:删除它们以避免输出中不需要的空格:

{% for item in list %}{% if forloop.first %}{% else %}{% if forloop.last %} and {% else %}, {% endif %}{% endif %}{{item}}{% endfor %}
Run Code Online (Sandbox Code Playgroud)


编辑:更改了代码.感谢Eric Fortin让我注意到我很困惑.