Django模板:访问列表的上一个和下一个元素

new*_*ver 3 python django django-templates

我对django模板很新,并且给人的印象是我还没有理解一些基础知识.

我有一个元素列表,我需要根据前一个和下一个元素的条件呈现列表的元素(如果隐藏了以下或前面的元素,我需要将当前元素标记为border元素) .

如何for在Django模板的循环中引用前一个和后面的元素?

Tim*_*ony 11

您可以为和编写自定义模板过滤器:nextprevious

def next(value, arg):
    try:
        return value[int(arg)+1]
    except:
        return None
Run Code Online (Sandbox Code Playgroud)

并在模板中:

{% for ... %}
  {% with list|next:forloop.counter0 as next %}
    {% if next.is_hidden %}
    ...
    {% endif %} 
  {% endwith %}
{% endfor %}   
Run Code Online (Sandbox Code Playgroud)

但正如其他人所说的那样,通过你的观点可能有更多的elegants解决方案

  • 如果你想得到下一个项目,那么它应该在模板标签中不是+1吗? (2认同)