Подтвердить что ты не робот

Шаблоны Django: forloop.first и forloop.last

У меня есть следующий код в моем шаблоне:

{% for f in friendslist %}

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

        // display stuff

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

{% endfor %}

Он работает так, как ожидается, когда в списке друзей есть несколько элементов. Но если есть только 1 элемент, то содержимое внутри forloop.last условный не отображается.

Я предполагаю, что это потому, что цикл в этом случае является первым, но я имею в виду также и последнее право? Так почему бы не дознать оба содержимого внутри первого и последнего условное шоу?

4b9b3361

Ответ 1

В моем коде оба они выполняются, если в списке друзей есть только один элемент. Вот тест, который вы можете запустить в оболочке, где, возможно, вы можете выяснить, что не работает:

$ ./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

Ответ 2

Вы не могли бы просто использовать тег "или", например {% 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 %}