Menu
CoddyTech

Filtros de template

Parte da seção Fundamentos do Django do Journey de Django da Coddy. Lição 15 de 23.

A lista de bebidas deve informar quantas bebidas há e mostrar preços como $3.50, mas {{ drink.price }} exibe 3.5. Um filtro altera um valor enquanto o modelo o exibe. Ele vem depois de um |, e alguns recebem um argumento depois de dois-pontos:

{{ guest.name|upper }}         {# ADA #}
{{ rating|floatformat:1 }}     {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}
{# ... #} é um comentário de modelo e nunca é exibido. O argumento de floatformat indica quantas casas decimais ele sempre exibe. length conta os itens de uma lista, e pluralize acrescenta uma terminação, s se você não indicar outra, quando a quantidade não é exatamente um: 3 boxes, 1 box.

Os filtros alteram apenas o que é exibido, nunca os dados na sua view.

challenge icon

Desafio

Fácil

Em drinks.html:

  • abaixo do <h1>, um <p class="count"> que exiba 4 drinks, ou 1 drink quando houver apenas um;
  • em cada <li> de bebida, após o nome, um <span class="price"> com duas casas decimais: $3.50.

Pressione Executar e acesse /drinks/.

Experimente você mesmo

<!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>

Todas as lições de Fundamentos do Django

Pratique por conta própria: Playground de Django