如何在 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.firstforloop.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/

见其他rangesn-ps:

http://djangosnippets.org/snippets/1357/ http://djangosnippets.org/snippets/2147/

另见:

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 起点的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 会话模型中设置自定义字段?

如何在 djangocms 中设置自定义模板

如何在 Django 中设置自定义中间件

在 django 中设置自定义用户注册表单的样式

如何在 ActionBar 标题中设置自定义字体?

如何在 iOS 中设置自定义属性? [复制]