Herencia de plantillas
Parte de la sección Conceptos básicos de Django del Journey de Django de Coddy. Lección 17 de 23.
home.html y drinks.html repiten el mismo <head>, y pronto también una barra de navegación. Si cambias el marco, editas todos los archivos. En su lugar, una plantilla proporciona el marco y las páginas lo rellenan.El marco marca la parte que rellena una página con una etiqueta {% block %} y un nombre. El archivo library/base.html de una biblioteca:
<body>
<nav>...</nav>
<article>{% block body %}{% endblock %}</article>
</body>Una página empieza con {% extends %} y después rellena el bloque:
{% extends "library/base.html" %}
{% block body %}
<p>We are open until 20:00.</p>
{% endblock %}{% extends %} debe ser la primera etiqueta. En una página que extiende otra, se descarta todo lo que esté fuera de un bloque: si olvidas incluir un encabezado en un bloque, desaparece.Desafío
Intermedio- En
base.html, coloca un bloque vacío llamadocontentdentro de<main>. - Haz que
home.htmlydrinks.htmlextiendan"menu/base.html", con su propio HTML dentro de ese bloque.
Pulsa Run: ambas páginas muestran la barra de navegación de base.html.
Pruébalo tú mismo
<!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>
Todas las lecciones de Conceptos básicos de Django
1Tu primer sitio con Django
Hola, DjangoUna segunda página4Diseños y archivos estáticos
Herencia de plantillasUn título para cada páginaPractica por tu cuenta: Playground de Django