0

由于django模板中没有模数(%)所以如何在此应用循环

{% for story in data %}
   {{forloop.counter}}

当 forloop.counter%4==1 那么这应该被执行

    <div class="thumb">
    <a href="#"><img src="{{ STATIC_URL }}images/thumb.jpg" width="185" height="185" /></a>
    </div>
    <div class="thumbFooter">
    <span class="view">
    <a href="#" class="viewIcon">{{ story.views }}</a>
    </span>
    <span class="like">
    <a href="#" class="likeIcon">{{ story.likes }}</a>
    </span>
    </div>

    </li>

当 forloop.counter%4==2 或 3 那么这个

  • 应该被执行

        <li>
        <div class="thumb">
        <a href="#"><img src="{{ STATIC_URL }}images/thumb.jpg" width="185" height="185" /></a>
        </div>
        <div class="thumbFooter">
        <span class="view">
        <a href="#" class="viewIcon">{{ story.views }}</a>
        </span>
        <span class="like">
        <a href="#" class="likeIcon">{{ story.likes }}</a>
        </span>
        </div>
        </li>
    

    当 forloop.counter%4==0 的 for 循环时,应该执行

        <li class="omega">
        <div class="thumb">
        <a href="#"><img src="{{ STATIC_URL }}images/thumb.jpg" width="185" height="185" /></a>
        </div>
        <div class="thumbFooter">
        <span class="view">
        <a href="#" class="viewIcon">{{ story.views }}</a>
        </span>
        <span class="like">
        <a href="#" class="likeIcon">{{ story.likes }}</a>
        </span>
        </div>
        </li>
    
        <div class="clear"></div>
    
       {% endfor %}
    
  • 4

    3 回答 3

    5

    您可以构建自己的自定义过滤器

    在 Django 的 templatetags 目录中,添加一个名为“mod.py”的文件。在该文件中添加以下代码:

    from django import template
    register = template.Library()
    
    def mod(value, arg):
        if value % arg == 0:
            return True
        else:
            return False
    
    register.filter('mod', mod)
    

    在您的模板中使用 mod 过滤器,如下所示:

    ...
    {% load mod %}
    ...
    <tr bgcolor="{% if forloop.counter|mod:2 %}#cccccc{% else %}#ffffff">
    ... 
    
    于 2012-07-20T10:18:04.503 回答
    3

    我想你想class='omega'在每 4liforloop。这样在模板中使用django Cycle ,

    {% for story in data %}
      <li {% cycle '' '' '' 'class="omega"' %}>
        <div class="thumb">
        <a href="#"><img src="{{ STATIC_URL }}images/thumb.jpg" width="185" height="185" /></a>
        </div>
        <div class="thumbFooter">
        <span class="view">
        <a href="#" class="viewIcon">{{ story.views }}</a>
        </span>
        <span class="like">
        <a href="#" class="likeIcon">{{ story.likes }}</a>
        </span>
        </div>
      </li>
    
        {% cycle '' '' '' '<div class="clear"></div>' %}
    
    {% endfor %}
    
    于 2012-07-20T10:18:56.620 回答
    2

    或者您可以使用divisibleby过滤器。您还可以使用添加过滤器来调整您的所有条件:

    当 forloop.counter%4==1 那么这应该被执行

    {% if forloop.counter|add:"-1"|divisibleby:"4" %}
    

    当 forloop.counter%4==2 或 3 那么这个

    {% if forloop.counter|add:"-2"|divisibleby:"4" or forloop.counter|add:"-3"|divisibleby:"4" %}
    

    并且不使用add可被 4 整除的那些:

    当 forloop.counter%4==0 的 for 循环时,应该执行

    {% if forloop.counter|divisibleby:"4" %}
    
    于 2013-04-22T17:49:14.363 回答