Menu
CoddyTech

Фильтры шаблонов

Часть раздела Основы Django путешествия по Django на Coddy. Урок 15 из 23.

В списке напитков должно указываться, сколько всего напитков, и отображаться цены, например $3.50, но {{ drink.price }} выводит 3.5. Фильтр изменяет значение при его выводе в шаблоне. Он записывается после |, а некоторые фильтры принимают аргумент после двоеточия:

{{ guest.name|upper }}         {# ADA #}
{{ rating|floatformat:1 }}     {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}
{# ... #} — это комментарий шаблона, который никогда не отображается. Аргумент floatformat задаёт количество десятичных знаков, которые он всегда отображает. length подсчитывает элементы списка, а pluralize добавляет окончание s, если вы не укажете другое, когда количество не равно ровно одному: 3 boxes, 1 box.

Фильтры изменяют только то, что выводится, но не данные в вашем представлении.

challenge icon

Задание

Легко

В drinks.html:

  • под <h1> — <p class="count"> с текстом 4 drinks или 1 drink, если напиток один;
  • в каждом <li> напитка после названия — <span class="price"> с двумя знаками после запятой: $3.50.

Нажми Запустить и посмотри на /drinks/.

Попробуйте сами

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Our Drinks</title>
</head>
<body>
    <h1>Our Drinks</h1>
    <ul>
        {% for drink in drinks %}
            <li class="drink">
                {{ drink.name }}
                {% if drink.sold_out %}
                    <span class="sold-out">Sold out</span>
                {% endif %}
            </li>
        {% empty %}
            <li>No drinks today.</li>
        {% endfor %}
    </ul>
</body>
</html>

Все уроки раздела Основы Django

Потренируйтесь самостоятельно: Песочница Django