Я хочу узнать, больше ли количество элементов в массиве в моем шаблоне Django 1. Можно ли использовать следующий синтаксис для этого?
{% if {{myarr|length}} > 1 %}
<!-- printing some html here -->
{% endif %}
Спасибо
Я хочу узнать, больше ли количество элементов в массиве в моем шаблоне Django 1. Можно ли использовать следующий синтаксис для этого?
{% if {{myarr|length}} > 1 %}
<!-- printing some html here -->
{% endif %}
Спасибо
По состоянию на Django 1.2; , если поддерживает логические операции и фильтры, поэтому вы можете записать это как:
{% if myarr|length > 1 %}
<!-- printing some html here -->
{% endif %}
См. проект Django документация, если с фильтрами.
нет. но вы можете использовать django-annoying, а {% if myarr|length > 1 %}
будет работать нормально.
Грустно, но такой функции нет в теге 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
Это одна из тех полномочий, которые язык шаблонов Django не дает вам. У вас есть несколько вариантов:
Вычислите это значение в своем представлении и передайте его в шаблон в новой переменной.
Установить надстройку библиотеки шаблонных тегов, который позволяет получить более богатые сравнения, например: http://www.djangosnippets.org/snippets/1350/
Используйте другой язык шаблонов, если вы считаете, что часто будете использовать языковые ограничения для шаблонов.
Возможно, этот будет полезен?
Проверка размеров коллекций в шаблонах Django несколько ограничена. Единственное решение, которое я использовал, - это передать другой параметр из представления в шаблон - но, если честно, если это зависит от того, чего вы пытаетесь достичь.