Menu
CoddyTech

Ereditarietà dei template

Fa parte della sezione Fondamenti di Django del percorso Django di Coddy. Lezione 17 di 23.

home.html e drinks.html ripetono entrambe lo stesso <head>, e presto anche una barra di navigazione. Se cambi la struttura, devi modificare ogni file. Invece, un modello costituisce la struttura e le pagine la riempiono.

La struttura contrassegna la parte che una pagina riempie con un tag {% block %} e un nome. Il file library/base.html di una libreria:

<body>
    <nav>...</nav>
    <article>{% block body %}{% endblock %}</article>
</body>

Una pagina inizia con {% extends %}, poi riempie il blocco:

{% extends "library/base.html" %}

{% block body %}
    <p>We are open until 20:00.</p>
{% endblock %}
{% extends %} deve essere il primo tag. In una pagina che estende un'altra, tutto ciò che si trova fuori da un blocco viene eliminato: un'intestazione che dimentichi di racchiudere in un blocco scompare.
challenge icon

Sfida

Medio
  • In base.html, inserisci un blocco vuoto chiamato content all'interno di <main>.
  • Fai in modo che home.html e drinks.html estendano "menu/base.html", inserendo il proprio HTML all'interno di quel blocco.

Premi Esegui: entrambe le pagine mostrano la navigazione di base.html.

Provalo tu

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Corner Café</title>
</head>
<body>
    <nav>
        <a href="{% url 'menu:home' %}">Home</a>
        <a href="{% url 'menu:drinks' %}">Drinks</a>
        <a href="{% url 'menu:about' %}">About</a>
    </nav>
    <main>
        <!-- each page's content goes here -->
    </main>
</body>
</html>

Tutte le lezioni di Fondamenti di Django

Esercitati da solo: Playground Django