Сравнение значений в шаблонах Django

VitaliyRodnenko, 15.05.2009

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

{% if some_val > 4 %}
<p>Истина</p>
{% else %}
<p>Ложь</p>
{% endif %}

вызывают ошибку.

В поисках решения я нагуглил библиотеку, разработанную Джеймсом Беннеттом (James Bennett) — django-template-utils.

Для использования достаточно добавить библиотеку в Python окружение, можно посредством установки:

tar zxvf template_utils-0.4p2.tar.gz
cd template_utils-0.4p2
python setup.py install

А можно просто добавить приложение в INSTALLED_APPS проекта.

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

Например проверка значения на условие «меньше или равно 4х»:

{% load comparison %}
{% if_less_or_equal some_val 4 %}
<p>Истина</p>
{% else %}
<p>Ложь</p>
{% endif_less_or_equal %}

Ссылка на библиотеку: django-template-utils.googlecode.com.

Подписаться на обновления блога

Вам понравился наш блог, хотите следить за обновлениями? Подпишитесь на RSS рассылку или рассылку по электронной почте. Так же вы можете следить за нами в Twitter.

Категории: Django, Python | Комментировать

Комментарии (10)

  1. Glader / 15.05.2009 в 14:38

    А еще лучше Jinja2 взять

  2. Alexander Solovyov / 15.05.2009 в 15:35

    Лол. ;)

    http://www.djangosnippets.org/snippets/12/

  3. Skaizer / 15.05.2009 в 15:42

    Спс за ссылку! Не знал :)

  4. Никита / 03.09.2009 в 17:47

    Потыкаю, может и правда что интересное есть. А вообще такие вещи можно и самому писать. В реальных проектах приходится много своих тегов и фильтров добавлять.

  5. Skaizer / 05.09.2009 в 13:49

    Ну кому как удобнее. Мне было проще выдернуть снипет из готовой библиотеки, не подключая ее целиком :)

  6. Валек / 24.09.2009 в 11:56

    А зачем логику в шаблоны пихать?

  7. Skaizer / 24.09.2009 в 11:59

    Эмм, а что вы подразумеваете под логикой? Тег {% if %} по вашему так же там лишний? )

  8. Serg / 17.03.2013 в 16:40

    Варианты вроде:


    {% if some_val > 4 %}
    Истина
    {% else %}
    Ложь
    {% endif %}
    вызывают ошибку.

    В >=django-1.2 сравнение работает из коробки.

  9. Кирилл / 19.06.2016 в 14:22

    Интересно, как раз сейчас по-немногу учу Python. И заодно Ruby.

  10. home / 20.12.2016 в 10:47

    fumjffwewwioxlxoejevxfqbwrtxzijhcgivswxujzruejiiylxkdsy

Оставить комментарий

480×60
480×60