如何将循环应用于此div

Ch *_*han 0 django-templates

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

{% for story in data %}
   {{forloop.counter}}
Run Code Online (Sandbox Code Playgroud)

当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>
Run Code Online (Sandbox Code Playgroud)

当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>
    
    Run Code Online (Sandbox Code Playgroud)

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

        <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 %}
    
    Run Code Online (Sandbox Code Playgroud)
  • Zai*_*han 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)
    
    Run Code Online (Sandbox Code Playgroud)

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

    ...
    {% load mod %}
    ...
    <tr bgcolor="{% if forloop.counter|mod:2 %}#cccccc{% else %}#ffffff">
    ... 
    
    Run Code Online (Sandbox Code Playgroud)