Посты с тэгом django template


Проверяем значение переменной на True, False, None в Django шаблонах

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

Но сегодняшний инцидент стоит просто за гранью моего понимания. Итак, есть модель с полем NullBooleanField, назовем его verified. Далее в шаблоне нужно отображать специфический класс для HTML-тега если verified is False. Что ж, это просто, за неимением is возпользуюсь проверенным ==:

<div{% if verified == False %} class="ui-state-error-text"{% endif %}>
    Some text
    Some input
</div>

Ок, обновляю страницу и думаю все ок. Однако, не тут-то было. Результата нет, в исходном тексте тоже никакого class="ui-state-error-text" нет и в помине. Странно. Ладно, дай думаю проверю в shell_plus. Проверка подтверждает мои опасения



Как подружить шаблоны Django в кодировке utf-8 c BOM байтами?


При работе с Django шаблонами периодически сталкиваюсь с проблемой, когда в браузере появляются "пробелы"(белые зоны) в дизайне. Первое рассмотрение проблемы, используя FireBug, заводит в тупик. Свёрстанный макет отображается нормально, а вот та же страница, собранная из нескольких файловых шаблонов в Django имеет при отображении "пробелы". Анализ результирующих html страниц показал, что на "бракованной" странице появляется череда байтов "EF BB BF".

Небольшое отступление... Череда байтов "EF BB BF", именуемая меткой поря


Используем встроенные строковые методы Python'а в Django шаблонах

Вместо предисловия

Привет! Давно здесь не отписывался. Почему? Наверное главная причина, что после выхода 1.1 версии уже не так активно слежу за развитием Django. Может быть в ближайшее время меня пробъет на творчество и я выдам пару-тройку новых постов, но не обещаю ;)


Но это я отвлекся от темы поста. А она заключается вот в чем. Надо было сегодня в шаблонах Django для некоторых урлов убрать конечные слеши, т.е. просто вызвать url.rstrip('/'). Просмотрев в который раз список всторенных шаблонных фильтров и не обнаружив там нужного, я задумался: как быть? Создавать простой фильтр, типа:

from django.template import Library
from django.template.defaultfilters import stringfilter


register = Library()


@register.filter
@stringfilter
def rstrip(text, chars=None):
    return text.rstrip(chars)

совершенно не хотелось. Ибо вдруг мне в будущем захочется добавить поддержку lstrip или strip метода.