Django: Vistas y plantillas
Guía completa para entender el patrón MVC-MVT en Django, crear vistas y trabajar con las plantillas usando Django Template Language para desarrollar aplicaciones web de forma ordenada.
Aprende Django GRATIS y certifícateEn Django, se suele hablar de un patrón MVC (Modelo-Vista-Controlador), aunque la organización real se aproxima más al esquema MVT (Modelo-Vista-Plantilla). Este enfoque ofrece una separación clara entre la lógica de datos, la lógica de presentación y la parte que actúa como “controlador” dentro del framework.
Cada vista en Django se encarga de procesar la petición y devolver una respuesta apropiada. Para ello, es habitual utilizar funciones o clases que reciben el objeto request
y, finalmente, usan la función render()
para integrar datos con una plantilla. Con este paso, la respuesta HTTP queda ensamblada de forma limpia y controlada.
“El trabajo con vistas y plantillas es esencial para estructurar la presentación de la aplicación.”
Para definir una vista, se suele crear un archivo views.py
dentro de la aplicación correspondiente. Un ejemplo básico podría ser:
from django.shortcuts import render
def vista_inicial(request):
contexto = {
'titulo': 'Bienvenido a mi sitio',
'mensaje': 'Hola desde Django'
}
return render(request, 'mi_plantilla.html', contexto)
En este ejemplo, la vista llama a render()
para combinar la información de contexto
con la plantilla mi_plantilla.html
. El Django Template Language te permite mostrar variables, controlar flujos lógicos o incluir bloques dinámicos en la salida HTML.
Cuando hablamos de plantillas, nos referimos a los archivos HTML que utilizan las etiquetas y sintaxis del Django Template Language. Dentro de la carpeta templates
, podrás crear tu propio diseño y aprovechar la capacidad de herencia mediante las etiquetas {% extends %}
y {% block %}
. Un ejemplo de uso sería:
{% extends "base.html" %}
{% block content %}
<h1>{{ titulo }}</h1>
<p>{{ mensaje }}</p>
{% endblock content %}
La herencia de plantillas permite definir estructuras comunes en un archivo base e incluir secciones específicas en distintas páginas. De esta forma, tu código resulta más organizado y es más sencillo de mantener. Además, se recomienda mantener las plantillas en una carpeta dedicada, habitualmente llamada templates
, para separar correctamente la capa de presentación de otras partes de tu proyecto.
Las etiquetas más comunes en el Django Template Language son {% %}
para la lógica y {{ }}
para la interpolación de variables. También cuentas con estructuras de control como {% if %}
, {% for %}
y la capacidad de incluir otras plantillas con {% include "ruta.html" %}
. Mantener tus archivos de plantillas bien estructurados hace que el proyecto sea legible y facilita el trabajo en equipo.
Para conectar estas vistas con las URL, se configura un archivo urls.py
, donde se definen las rutas de acceso y se enlazan con las funciones o clases que devuelven una respuesta. Ejemplo:
from django.urls import path
from .views import vista_inicial
urlpatterns = [
path('', vista_inicial, name='vista_inicial'),
]
Una de las ventajas más destacadas de este patrón es la clara separación entre las vistas y las plantillas. Al seguir este diseño, cada elemento tiene su responsabilidad específica: los modelos para la lógica de datos, las vistas para la lógica de negocio y las plantillas para la lógica de presentación.
En un flujo de trabajo habitual, la vista procesa la petición, obtiene los datos de los modelos o de cualquier fuente externa, y los pasa a la plantilla. Luego, el Django Template Language sustituye las variables o procesa las etiquetas antes de generar el HTML definitivo.
A modo de buenas prácticas, se suele:
- Separar la lógica intensiva en archivos de utilidad o en funciones específicas para no sobrecargar las vistas.
- Mantener los archivos
urls.py
,views.py
ytemplates
organizados con nombres descriptivos, facilitando la búsqueda de cada elemento. - Utilizar nombres coherentes para los bloques en las plantillas, como
{% block content %}
o{% block sidebar %}
, para mantener la consistencia.
La combinación de vistas y plantillas en Django garantiza un ciclo de desarrollo fluido. Con este enfoque, se reduce la complejidad y se logra una mejor división de responsabilidades, acorde al modelo MVC que inspira el framework.
Lecciones de este módulo de Django
Lecciones de programación del módulo Vistas y plantillas del curso de Django.
Ejercicios de programación en este módulo de Django
Evalúa tus conocimientos en Vistas y plantillas con ejercicios de programación Vistas y plantillas de tipo Test, Puzzle, Código y Proyecto con VSCode.