Як я можу перевірити розмір колекції в шаблоні Django?


147

У мене є список у моєму шаблоні Джанго. Я хочу щось зробити, лише якщо розмір списку більше нуля.

Я спробував myList|lengthі , myList|length_isале вони не увінчалися успіхом.

Я шукав всюди і не бачу прикладів. Як я можу це перевірити?

Відповіді:


279

Див. Https://docs.djangoproject.com/en/stable/ref/templates/builtins/#if : просто використовуйте для відтворення їхнього прикладу:

{% if athlete_list %}
    Number of athletes: {{ athlete_list|length }}
{% else %}
    No athletes.
{% endif %}

| довжина Я завжди плутаюсь із шаблоном джинджа на колбі та з джанго. Спасибі за інформацію. Дуже корисно.
Doogle

7
lengthФільтр також , здається, працює в умовних блоках. напр.{% if athlete_list|length > 1 %}...{% endif %}
Thismatters

93

Якщо ви використовуєте недавнє Django, список змін 9530 представив блок {% empty%}, що дозволяє писати

{% for athlete in athlete_list %}
  ...
{% empty %}
  No athletes
{% endfor %}

Корисно, коли те, що ви хочете зробити, включає повторення над не порожнім списком.



20

Список вважається таким, Falseякщо він не має елементів, тому ви можете зробити щось подібне:

{% if mylist %}
    <p>I have a list!</p>
{% else %}
    <p>I don't have a list!</p>
{% endif %}

13

Якщо ви спробували myList | length і myList | length_is, і його результат не отримав бажаних результатів, тоді вам слід скористатися myList.count


6

Ви можете спробувати:

{% if theList.object_list.count > 0 %}
    blah, blah...
{% else %}
    blah, blah....
{% endif %} 


1

Мені потрібна довжина колекції для того, щоб вирішити, чи слід робити таблицю <thead></thead>

але не знаю, чому @Django 2.1.7 обрана відповідь не вдасться (порожній) forloopпісля мене .

Мені довелося скористатися, {% if forloop.first %} {% endif %}щоб подолати:

<table>
    {% for record in service_list %}
        {% if forloop.first %}
            <thead>
            <tr>
                <th>日期</th>
            </tr>
            </thead>
        {% endif %}
        <tbody>
        <tr>
            <td>{{ record.date }}</td>
        </tr>
    {% endfor %}
    </tbody>
</table>
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.