Шаблоны Django: forloop.first и forloop.last - PullRequest
43 голосов
/ 09 августа 2011

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

{% for f in friendslist %}

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

        // display stuff

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

{% endfor %}

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

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

Ответы [ 2 ]

32 голосов
/ 09 августа 2011

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

$ ./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
6 голосов
/ 07 декабря 2013

не могли бы вы просто использовать тег "или", например {% 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...