Django

6 тегов шаблонов Django, нечасто представленных в руководствах

Данная статья предназначена для тех, кто не очень любит возиться с документацией.

1. for…empty

Тег for может иметь необязательный элемент {% empty%}, текст которого отображается, если имеющийся массив пуст или не может быть найден:

{% for student in student_list %} ... {% empty %} ... {% endfor %}

Это эквивалентно следущему коду:

{% if student-list %} {% for student in student_list %} ... {% endfor %} {% else %} ... {% endif %}

2. lorem

Нет, вам не нужны никакие другие пакеты для использования текста lorem. Данный тег отображает на экране известный псевдолатинский текст “lorem ipsum”. Это иногда бывает полезным для заполнения шаблонов примерными данными, если конечно у вас пока нет никаких других данных.

{% lorem [count] [method] [random] %}

Напрмер:

  • {% lorem %} выведет обычный абзац «lorem ipsum»;
  • {% lorem 3 p %} выведет обычный абзац «lorem ipsum» и два случайных абзаца, каждый из которых заключен в теги HTML <p>;
  • {% lorem 2 w random %} выведет два случайных латинских слова;

3. now

Отображает текущую дату и / или время в формате, соответствующем заданной строке. Такая строка может содержать символы спецификаторов в формате, описанном в разделе фильтра даты.

{% npw "jS F Y" %}

4. resetcycle

Сбрасывает предыдущий цикл таким образом, чтобы при следующем вызове он начинал работу с первого элемента. Без аргументов тег {% resetcycle%} сбросит последний цикл {% cycle%}, который определен в данном шаблоне.

{% for coach in coach_list %} {{ coach.name }} {% for athlete in coach.athlete_set.all %} <p class="{ cycle 'odd' 'even' }> {{ athlete.name }} </p> {% endfor %} {% resetcycle %} {% endfor %}

Данный пример вернет следующий HTML код:

<h1>José Mourinho</h1> <p class="odd">Thibaut Courtois</p> <p class="even">John Terry</p> <p class="odd">Eden Hazard</p> <h1>Carlo Ancelotti</h1> <p class="odd">Manuel Neuer</p> <p class="even">Thomas Müller</p>

5. verbatim

  • Останавливает рендеринг содержимого данного тега;
  • обычно используется для разрешения конфликтов с объектом layer JavaScript, который часто конфликтует с синтаксисом Django

Например:

{% verabtim %} {{ if dying }} Still alive. {{/if}} {% endverbatim %}

Вы также можете назначить специальный закрывающий тег, позволяющий использовать {% endverbatim %} как часть неотрисованного контента:

{% verbatim myblock %}

Избегайте рендеринга шаблонов через:

{% verbatim %} {% endverbatim %} block. {% endverbatim myblock %}

6. widthratio

При создании гистограмм и подобных объектов, этот тег вычисляет отношение данного значения к максимальному значению, а затем умножает это отношение на максимальную ширину.

<img src="#" alt="Imagine an image here" height="10" width="{ % widthratio this_value max_value max_width % }">

Если this_value равно 175, max_value равно 200, а max_width равно 100, изображение в приведенном выше примере будет иметь ширину 88 пикселей (потому что 175/200 = 0,875; 0,875 * 100 = 87,5, округляется до 88).

В некоторых случаях вы можете захотеть сохранить результат вычисления ширины в переменной. Это можно сделать, например, следующим образом:

{% widthratio this_value max_value max_width as width %} {% blocktrans %}The width is: {{ width }}{%endblocktrans%}
Ilyaragalin

Recent Posts

Абсолютное значение числа в Python

При анализе данных часто требуется быстро найти абсолютное значение набора чисел. Для выполнения этой задачи…

1 день ago

Библиотека Pydantic: валидация данных на Python

Pydantic - это мощная библиотека проверки данных и управления настройками для Python, созданная для повышения…

1 неделя ago

7 наилучших библиотек визуализации Python на 2024 год

Python предлагает набор библиотек, удовлетворяющих различные потребности в визуализации, будь то академические исследования, бизнес-аналитика или…

2 недели ago

Как преобразовать строку в байты в Python

В Python для представления данных в двоичной форме можно использовать байты. Из этой статьи вы…

3 недели ago

Что такое Werkzeug?

В этой статье рассказывается о том, что такое Werkzeug и как Flask использует его для…

4 недели ago

Как прибавить дни, месяцы и годы к дате в Python

При работе с датами часто возникает необходимость прибавлять к дате или вычитать из нее различные…

1 месяц ago