如何在django模板中设置循环起始点的自定义

时间:2013-09-03 22:05:35

标签: python django django-templates django-template-filters

java中有一个forloop,我可以告诉你从哪里开始,到哪里结束:

for(int i=10;i<array.length;i++){

}

但是如何在django模板中实现此int i=10?我怎样才能自己设定起点和终点?

有一个forloop.firstforloop.last,但它们是在循环中定义的,我不能做这样的事情吗?:

{{forloop.first=10}}

{% for athlete in athlete_list %}
    <li>{{ athlete.name }}</li>
{% endfor %}

{{forloop.last=20}}

我读了django doc,但这个功能似乎不存在

1 个答案:

答案 0 :(得分:6)

如何使用内置slice过滤器:

{% for athlete in athlete_list|slice:"10:20" %}
    <li>{{ athlete.name }}</li>
{% endfor %}

如果你需要创建一个数字循环(就像python的range),你需要一个自定义模板标签,如下所示:http://djangosnippets.org/snippets/1926/

请参阅其他range摘要:

另见:

顺便说一句,这听起来不像模板的工作 - 考虑从视图中传递范围。而且,仅供参考,有一个proposal来制作这样的标签,但它被拒绝了,因为it is trying to lead to programming in the template. - 想一想。