Menu
CoddyTech

Filtres de modèle

Fait partie de la section Les bases de Django du Journey Django de Coddy. Leçon 15 sur 23.

La liste des boissons devrait indiquer combien il y en a et afficher les prix comme $3.50, mais {{ drink.price }} affiche 3.5. Un filtre modifie une valeur au moment où le modèle l’affiche. Il est placé après un |, et certains filtres prennent un argument après deux-points :

{{ guest.name|upper }}         {# ADA #}
{{ rating|floatformat:1 }}     {# 4.7, when rating is 4.66 #}
{{ boxes|length }} box{{ boxes|pluralize:"es" }}
{# ... #} est un commentaire de modèle, il n’est jamais affiché. L’argument de floatformat indique le nombre de décimales toujours affichées. length compte les éléments d’une liste, et pluralize ajoute une terminaison, s sauf si tu en indiques une autre, lorsque le nombre n’est pas exactement égal à un : 3 boxes, 1 box.

Les filtres modifient uniquement ce qui est affiché, jamais les données dans ta vue.

challenge icon

Défi

Facile

Dans drinks.html :

  • sous le <h1>, un <p class="count"> qui indique 4 drinks, ou 1 drink lorsqu’il n’y en a qu’un ;
  • dans le <li> de chaque boisson, après le nom, un <span class="price"> avec deux décimales : $3.50.

Cliquez sur Exécuter et consultez /drinks/.

Essayez vous-même

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

Toutes les leçons de Les bases de Django

Entraînez-vous par vous-même : Playground Django