如何在 django 模板中设置自定义 forloop 起点
Posted
技术标签:
【中文标题】如何在 django 模板中设置自定义 forloop 起点【英文标题】:how to set custom forloop start point in django template 【发布时间】:2013-09-07 06:37:58 【问题描述】:在java中有一个forloop,我可以告诉我从哪里开始,从哪里结束:
for(int i=10;i<array.length;i++)
但是我如何在 django 模板中实现这个int i=10
?如何自己设置起点和终点?
有一个forloop.first
和forloop.last
,但它们是在循环内定义的,我不能这样做吗?:
forloop.first=10
% for athlete in athlete_list %
<li> athlete.name </li>
% endfor %
forloop.last=20
我阅读了 django 文档,但似乎没有此功能
【问题讨论】:
你为什么需要这个? @thomasorozco,只是出于兴趣。 你可以构建一个自定义模板标签,它可以为你做到这一点,就像这样djangosnippets.org/snippets/779 【参考方案1】:如何使用内置的slice 过滤器:
% for athlete in athlete_list|slice:"10:20" %
<li> athlete.name </li>
% endfor %
如果你需要做一个数字循环(就像python的range
),你需要一个自定义的模板标签,比如这个:http://djangosnippets.org/snippets/1926/
见其他range
sn-ps:
另见:
Numeric for loop in Django templates顺便说一句,这听起来不像是模板的工作 - 考虑从视图传递一个范围。而且,仅供参考,有一个 proposal 来制作这样的标签,但它被拒绝了,因为 it is trying to lead to programming in the template.
- 想想吧。
【讨论】:
我的例子只是一个示例代码,并不是我的。但真正的问题是:我可以在 forloop 的模板中从 2001 数到 3001 吗? 我有一个循环,其中第一个项目以某种方式设置样式,而后续项目的样式不同。这样做破坏了divisibleby
作为在 Bootstrap 中添加 clearfixes 的一种方式,但这使我能够做我想做的事。感谢您的回答!以上是关于如何在 django 模板中设置自定义 forloop 起点的主要内容,如果未能解决你的问题,请参考以下文章