Share This
Связаться со мной
Крути в низ
Categories
//6 тегов шаблонов Django, нечасто представленных в руководствах

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

01.11.2020Category : Python

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

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%}

    Проходите тест по Python и поймите, готовы ли вы идти на курсы
  • 9 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Связаться со мной
Close