Django模板:forloop.first和forloop.last

Sam*_*mmy 44 python django

我的模板中有以下代码:

{% for f in friendslist %}

        {% if forloop.first %}
            // display something                            
        {% endif %}

        // display stuff

        {% if forloop.last %}
            // display something
        {% endif %}

{% endfor %}
Run Code Online (Sandbox Code Playgroud)

当friends列表中有多个项目时,它按预期工作.但是如果只有一个项目,则不显示forloop.last条件内的内容.

我想这是因为在这种情况下循环是第一个,但我的意思是它也是最后一个?那么为什么在第一个和最后一个条件显示中都没有内容?

小智 32

在我的代码中,如果friendslist中只有一个元素,它们都会执行.这是一个你可以在shell中运行的测试,也许你可以弄清楚哪些不起作用:

$ ./manage.py shell

>>> from django import template
>>> t = template.Template("""{% for f in friendslist %}
                         {% if forloop.first %}
                             First of the loop                            
                         {% endif %}
                         {{ f }}
                         {% if forloop.last %}
                             Last of the loop
                         {% endif %}
                 {% endfor %}""")

>>> c = template.Context({'friendslist' : ['one element',]})
>>> t.render(c)


                        First of the loop

                    one element

                         Last of the loop
Run Code Online (Sandbox Code Playgroud)


Chr*_*her 7

难道你不能只使用像{%if forloop.last或friendlist.count == 1%}的"或"标签

            {% for f in friendslist %}

                    {% if forloop.first %}
                        // display something                            
                    {% endif %}

                    // display stuff

                    {% if forloop.last or friendlist.count == 1 %}
                        // display something
                    {% endif %}

            {% endfor %}
Run Code Online (Sandbox Code Playgroud)