django 模板 forloop.counter 问题

Posted

技术标签:

【中文标题】django 模板 forloop.counter 问题【英文标题】:django template forloop.counter question 【发布时间】:2010-11-16 05:16:58 【问题描述】:

我的表单中有很多字段我试图将不同的 css 应用于相邻表单字段,例如

<li class='thiscolor' >
   <field>
</li>

<li class='thatcolor' >
   <field>
</li>

如果有类似的方法

% for field in form %
    **% if forloop.counter%2 == 0 %**
   <li class='thiscolor'>
    % else%
   <li class='thatcolor'>     
    %endif
     field
    </li>
% endfor %

forloop.counter ?

非常感谢!

【问题讨论】:

【参考方案1】:

cycle tag 专为此类问题设计:

% for field in form %
    <li class="% cycle 'thiscolor' 'thatcolor' %"> field </li>
% endfor %

【讨论】:

【参考方案2】:

我同意 Jarret 的观点,cycle 在这里是最好的,但要真正回答这个问题,%2==0 操作可以通过使用 divisibleby 过滤器来复制。

% if forloop.counter|divisibleby:"2" %

【讨论】:

【参考方案3】:

要记住的另一件事是,由于这是一个前端问题 - 样式是您想要实现的效果 - 您可以在前端解决它。在A List Apart article 的底部提供了一个很好的示例。当然,如果您已经有了工作的 Django 代码,那么现在这样做是没有意义的。

【讨论】:

是的,但模板肯定是 Django 的前端部分(MVC 中的“V”)。 没错,这是一个样式问题,可以在客户端 (CSS) 交替处理。

以上是关于django 模板 forloop.counter 问题的主要内容,如果未能解决你的问题,请参考以下文章

Django1.5 forloop.counter 不在模板中递增

django 模板 forloop.counter 问题

如何使用 forloop.counter0 作为 Django 模板中的键

django 模板中{%for%}的使用

Django学习-8-模板渲染的一些特性

如何在Django模板中添加,乘以数字变量?