【问题标题】:how to set custom forloop start point in django template如何在 django 模板中设置自定义 forloop 起点
【发布时间】:2013-09-07 06:37:58
【问题描述】:

在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 文档,但似乎没有此功能

【问题讨论】:

  • 你为什么需要这个?
  • @thomasorozco,只是出于兴趣。
  • 你可以构建一个自定义模板标签,它可以为你做到这一点,就像这样djangosnippets.org/snippets/779

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


【解决方案1】:

如何使用内置的slice 过滤器:

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

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

见其他rangesn-ps:

另见:

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

【讨论】:

  • 我的例子只是一个示例代码,并不是我的。但真正的问题是:我可以在 forloop 的模板中从 2001 数到 3001 吗?
  • 我有一个循环,其中第一个项目以某种方式设置样式,而后续项目的样式不同。这样做破坏了divisibleby 作为在 Bootstrap 中添加 clearfixes 的一种方式,但这使我能够做我想做的事。感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2016-06-26
  • 2015-10-04
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多