Regístrate para acceder a más de 15 cursos gratuitos de programación con un simulador

Herencia de plantillas (Extends) Desarrollo con el framework Django

En muchos sitios web, hay partes que se repiten, como el menú o el pie de página, pero otras cambian constantemente, como el contenido principal. ¿La solución? No es copiar y pegar HTML cada vez.

En Django, usamos la herencia de plantillas para evitar esto. En esta lección, aprenderás cómo funciona y cómo usarla en tu proyecto para evitar redundancias y mantener todo organizado.


¿Qué es una plantilla en Django?

La plantilla en Django es simplemente un archivo HTML que puede incluir contenido dinámico. Podemos usar unas etiquetas especiales llamadas "etiquetas de plantilla" (como {% block %} y {% extends %}) para organizarlas mejor.

La idea es crear una plantilla base (como un molde) que contenga el diseño general del sitio web. Luego, otras plantillas pueden "extender" esa plantilla base y solo cambiar las partes que necesiten, sin repetir todo el HTML.


Paso 1: Crear una plantilla base

Vamos a comenzar creando una plantilla llamada base.html. Esta será la base común para todas nuestras demás páginas.

<!-- archivo: codica_django_blog/templates/base.html -->

<!DOCTYPE html>
<html lang="en">
<head>
    <title>{% block title %}Django en codica{% endblock %}</title>
</head>
<body>
<div id="sidebar">
    {% block sidebar %}
        <ul>
            <li><a href="/">Inicio</a></li>
            <li><a href="/articles/">Artículos</a></li>
        </ul>
    {% endblock %}
</div>

<div id="content">
    {% block content %}{% endblock %}
</div>
</body>
</html>

¿Qué significa esto?

  • {% block nombre %} ... {% endblock %}: son bloques que podemos reemplazar (o no) en una plantilla que herede esta base. Aquí tenemos tres bloques:
    • title: para cambiar el título de la página.
    • sidebar: para cambiar el menú lateral.
    • content: para mostrar el contenido principal.

Si una plantilla hija no sobreescribe un bloque, se usa el valor que está en base.html.


Paso 2: Crear una plantilla que hereda

Ahora vamos a hacer una página y usar esa plantilla base. Supongamos que tenemos una página "Acerca del blog" (about.html):

<!-- archivo: codica_django_blog/templates/about.html -->

{% extends "base.html" %}

{% block title %}Explorando Django con codica{% endblock %}

{% block content %}
    <h1>Sobre este blog</h1>
    <p>Explorando Django con codica</p>
    <p>{{ tags|join:", " }}</p>
{% endblock %}

Veamos qué está pasando:

  • {% extends "base.html" %}: le estamos diciendo a Django que esta plantilla se basa en base.html.
  • Solo sobreescribimos los bloques title y content.
  • Como no cambiamos el bloque sidebar, Django usará el menú que ya venía por defecto en base.html.

Este mecanismo permite que nuestras plantillas sean más limpias y más fáciles de mantener.


¿Y si necesito más niveles?

Django permite heredar plantillas varias veces. Un patrón común es usar tres niveles:

  1. Una plantilla base.html general
    Define el diseño base para todo el sitio (como logo, menú principal, pie de página, etc).

  2. Una plantilla intermedia por sección
    Por ejemplo:

    • base_article.html para el área de artículos.
    • base_news.html para noticias.
      Estas plantillas extienden base.html y ajustan elementos según el contexto.
  3. Una plantilla para cada página específica
    Por ejemplo:

    • article_detail.html para un artículo específico.
    • news_item.html para una noticia específica. Estas usarán base_article.html o base_news.html como base.

Este enfoque nos ayuda a mantener el código organizado y evita repetir estructuras comunes.


Tabla: Etiquetas de plantilla usadas

Comando Descripción
{% extends "..." %} Indica qué plantilla se va a usar como punto de partida
{% block nombre %} Declara una sección que otras plantillas pueden sobreescribir
{% endblock %} Marca el final de un bloque
{{ variable }} Muestra una variable en el HTML
{{ variable|filtro }} Muestra una variable aplicándole un filtro (como join)

Resumen

  • En Django puedes usar herencia de plantillas para evitar repetir código HTML.
  • Una plantilla base (base.html) contiene los elementos comunes del sitio.
  • Las plantillas hijas usan {% extends "base.html" %} y sobreescriben bloques con {% block nombre %}.

Ahora ya sabes cómo construir estructuras limpias reutilizando plantillas con Django. Es como armar una maqueta donde solo cambias las piezas que necesitas. Prueba creando tus propias plantillas base y vas a ver lo útil que es este patrón.


Trabajo independiente

Repasa y guarda tu progreso

En esta actividad vamos a reforzar el contenido aprendido y registrar los cambios realizados. Sigue estos pasos:

  • Repite todo lo que viste en la teoría de la lección en tu computadora.
  • Guarda los cambios en Git usando git add y git commit.

Materiales adicionales

  1. Herencia de plantillas

Para acceder completo a curso necesitas un plan básico

El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.

Obtener acceso
130
cursos
1000
ejercicios
2000+
horas de teoría
3200
test

Obtén acceso

Cursos de programación para principiantes y desarrolladores experimentados. Comienza tu aprendizaje de forma gratuita

  • 130 cursos, 2000+ horas de teoría
  • 1000 ejercicios prácticos en el navegador
  • 360 000 estudiantes
Al enviar el formulario, aceptas el «Política de privacidad» y los términos de la «Oferta», y también aceptas los «Términos y condiciones de uso»

Nuestros graduados trabajan en empresas como:

Bookmate
Health Samurai
Dualboot
ABBYY