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

Проверка количества элементов в массиве в шаблоне Django

Я хочу узнать, больше ли количество элементов в массиве в моем шаблоне Django 1. Можно ли использовать следующий синтаксис для этого?

{% if {{myarr|length}} > 1 %}
<!-- printing some html here -->
{% endif %}

Спасибо

4b9b3361

Ответ 1

По состоянию на Django 1.2; , если поддерживает логические операции и фильтры, поэтому вы можете записать это как:

{% if myarr|length > 1 %}
<!-- printing some html here -->
{% endif %}

См. проект Django документация, если с фильтрами.

Ответ 2

нет. но вы можете использовать django-annoying, а {% if myarr|length > 1 %} будет работать нормально.

Ответ 3

Грустно, но такой функции нет в теге django if. Существует слухи, которые умнее, если тег будет добавлен в 1.2., по крайней мере, в списке High priority.

В качестве альтернативы вы можете использовать "smart_if" с djangosnippets.com

ИЛИ вы можете добавить свой собственный фильтр (такой же, как фильтр length_is), но он просто добавляет больше бесполезного кода: (

from django import template
register = template.Library()

def length_gt(value, arg):
    """Returns a boolean of whether the value is greater than an argument."""
    try:
        return len(value) > int(arg)
    except (ValueError, TypeError):
        return ''
length_gt.is_safe = False
register.filter(length_gt)

Для получения дополнительной информации обратитесь к django docs

Ответ 4

Это одна из тех полномочий, которые язык шаблонов Django не дает вам. У вас есть несколько вариантов:

  • Вычислите это значение в своем представлении и передайте его в шаблон в новой переменной.

  • Установить надстройку библиотеки шаблонных тегов, который позволяет получить более богатые сравнения, например: http://www.djangosnippets.org/snippets/1350/

  • Используйте другой язык шаблонов, если вы считаете, что часто будете использовать языковые ограничения для шаблонов.

Ответ 5

Возможно, этот будет полезен?

Проверка размеров коллекций в шаблонах Django несколько ограничена. Единственное решение, которое я использовал, - это передать другой параметр из представления в шаблон - но, если честно, если это зависит от того, чего вы пытаетесь достичь.