Menu
CoddyTech

Filtros de plantilla

Parte de la sección Conceptos básicos de Django del Journey de Django de Coddy. Lección 15 de 23.

La lista de bebidas debería indicar cuántas bebidas hay y mostrar precios como $3.50, pero {{ drink.price }} muestra 3.5. Un filtro cambia un valor cuando la plantilla lo muestra. Va después de un |, y algunos reciben un argumento después de dos puntos:

{{ guest.name|upper }}         {# ADA #}
{{ rating|floatformat:1 }}     {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}
{# ... #} es un comentario de plantilla y nunca se muestra. El argumento de floatformat indica cuántos decimales muestra siempre. length cuenta los elementos de una lista, y pluralize añade una terminación, s salvo que indiques otra, cuando la cantidad no es exactamente uno: 3 boxes, 1 box.

Los filtros solo cambian lo que se muestra, nunca los datos de la vista.

challenge icon

Desafío

Fácil

En drinks.html:

  • debajo de <h1>, un <p class="count"> que diga 4 drinks, o 1 drink cuando haya uno;
  • en el <li> de cada bebida, después del nombre, un <span class="price"> con dos decimales: $3.50.

Presiona Ejecutar y mira /drinks/.

Pruébalo tú mismo

<!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 las lecciones de Conceptos básicos de Django

Practica por tu cuenta: Playground de Django