Python Django模板:forloop.first和forloop.last

Python Django模板:forloop.first和forloop.last,python,django,Python,Django,我的模板中有以下代码: {% for f in friendslist %} {% if forloop.first %} // display something {% endif %} // display stuff {% if forloop.last %} // display something

我的模板中有以下代码:

{% for f in friendslist %}

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

        // display stuff

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

{% endfor %}
当friendslist中有多个项目时,它会按预期工作。但是如果只有一个项目,那么forloop.last中的内容 条件不显示

我想这是因为这种情况下的循环是第一个,但我的意思是它也是最后一个,对吗?那么为什么不把这两个内容都放在第一个和最后一个里面呢
条件显示?

在我的代码中,如果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
难道你不能使用像{%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 %}
您还可以在模板中使用“not”来解决此问题。即使列表中只有一项,它也可以工作

       {% for friend in friendslist %}

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

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

我在一个只有一个项目的列表对象上尝试了这段代码,两个部分的内容都按预期显示。这可能仍然取决于django版本,我认为您应该提及您正在使用的django版本。