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.Sfida
Medio- In
base.html, inserisci un blocco vuoto chiamatocontentall'interno di<main>. - Fai in modo che
home.htmledrinks.htmlestendano"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
4Layout e file statici
Ereditarietà dei templateUn titolo per ogni paginaEsercitati da solo: Playground Django