Car*_*l G 58 django django-templates
Django模板提供内置标记,cycle用于在模板中的不同点(或模板中的循环)之间交替切换多个值,但是当在cycles定义之外的范围内访问此标记时,此标记不会重置.也就是说,如果你在你的模板两个或多个列表,所有的行,你想它的使用一些CSS定义odd和even,列表的第一行会拿起其中最后一个离开,而不是用新的迭代来自选择(odd和even)
例如,在下面的代码中,如果第一个博客的条目数量为奇数,那么第二个博客中的第一个条目将even在我希望它开始时开始odd.
{% for blog in blogs %}
  {% for entry in blog.entries %}
    <div class="{% cycle 'odd' 'even' %}" id="{{entry.id}}">
      {{entry.text}}
    </div>
  {% endfor %}
{% endfor %}
我尝试通过修补resetcycle此处提供的标记来避免这种情况:
无济于事.(该代码对我不起作用.)
我也尝试将我的内部循环移动到自定义标记中,但这也不起作用,可能是因为编译/渲染循环将循环移回外部循环?(不管为什么,它对我不起作用.)
我怎样才能完成这个简单的任务!?我不希望在我的视图中使用预先编译的信息创建数据结构; 这似乎没必要.提前致谢.
Car*_*yer 111
最简单的解决方法(直到重置补丁修复并应用)是使用带有forloop.counter的内置"divisibleby"过滤器:
{% for entry in blog.entries %}
  <div class="{% if forloop.counter|divisibleby:2 %}even{% else %}odd{% endif %}" id="{{ entry.id }}">
    {{ entry.text }}
  </div>
{% endfor %}
更冗长,但不难理解,它很有效.
Mat*_*att 14
https://docs.djangoproject.com/en/1.8/ref/templates/builtins/#cycle
{% for o in some_list %}
    <tr class="{% cycle 'row1' 'row2' %}">
        ...
    </tr>
{% endfor %}
| 归档时间: | 
 | 
| 查看次数: | 29324 次 | 
| 最近记录: |