En este tema, aprenderemos sobre el sistema de plantillas de Django y cómo manejar archivos estáticos como CSS, JavaScript e imágenes. Las plantillas permiten separar la lógica de la presentación, mientras que los archivos estáticos son esenciales para el diseño y la funcionalidad del frontend.
- Introducción a las Plantillas de Django
¿Qué es una Plantilla?
Una plantilla en Django es un archivo de texto que define la estructura o el diseño de un documento, generalmente una página web. Las plantillas pueden contener tanto HTML como etiquetas de plantilla de Django, que permiten insertar contenido dinámico.
Configuración de Plantillas
Para usar plantillas en Django, primero debemos asegurarnos de que la configuración del proyecto está correctamente configurada. En el archivo settings.py
, asegúrate de que la variable TEMPLATES
esté configurada correctamente:
# settings.py TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ]
Creando una Plantilla
- Crear el Directorio de Plantillas: Dentro de tu proyecto, crea un directorio llamado
templates
. - Crear un Archivo de Plantilla: Dentro del directorio
templates
, crea un archivo HTML, por ejemplo,index.html
.
<!-- templates/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Mi Primera Plantilla</title> </head> <body> <h1>¡Hola, Mundo!</h1> <p>Esta es mi primera plantilla en Django.</p> </body> </html>
Renderizando una Plantilla en una Vista
Para renderizar una plantilla, utilizamos la función render
en nuestra vista.
# views.py from django.shortcuts import render def index(request): return render(request, 'index.html')
Enrutamiento de la Vista
Asegúrate de que la URL correspondiente esté configurada para llamar a la vista.
# urls.py from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
- Archivos Estáticos
¿Qué son los Archivos Estáticos?
Los archivos estáticos son archivos que no cambian en el servidor, como CSS, JavaScript e imágenes. Django proporciona una forma sencilla de gestionar estos archivos.
Configuración de Archivos Estáticos
En el archivo settings.py
, asegúrate de que las variables STATIC_URL
y STATICFILES_DIRS
estén configuradas correctamente.
Creando y Usando Archivos Estáticos
- Crear el Directorio de Archivos Estáticos: Dentro de tu proyecto, crea un directorio llamado
static
. - Agregar Archivos Estáticos: Dentro del directorio
static
, puedes crear subdirectorios para CSS, JavaScript e imágenes.
- Referenciar Archivos Estáticos en Plantillas: Usa la etiqueta
{% static %}
para referenciar archivos estáticos en tus plantillas.
<!-- templates/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Mi Primera Plantilla</title> <link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}"> </head> <body> <h1>¡Hola, Mundo!</h1> <p>Esta es mi primera plantilla en Django.</p> <img src="{% static 'images/logo.png' %}" alt="Logo"> <script src="{% static 'js/scripts.js' %}"></script> </body> </html>
Ejemplo Práctico
Vamos a crear un ejemplo práctico que combine plantillas y archivos estáticos.
- Crear el Directorio de Plantillas y Archivos Estáticos:
- Contenido de
index.html
:
<!-- templates/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Mi Primera Plantilla</title> <link rel="stylesheet" type="text/css" href="{% static 'css/styles.css' %}"> </head> <body> <h1>¡Hola, Mundo!</h1> <p>Esta es mi primera plantilla en Django.</p> <img src="{% static 'images/logo.png' %}" alt="Logo"> <script src="{% static 'js/scripts.js' %}"></script> </body> </html>
- Contenido de
styles.css
:
/* static/css/styles.css */ body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding: 50px; } h1 { color: #333; } p { color: #666; }
- Contenido de
scripts.js
:
// static/js/scripts.js document.addEventListener('DOMContentLoaded', function() { console.log('¡JavaScript cargado correctamente!'); });
- Contenido de
logo.png
: Usa cualquier imagen de logo que tengas disponible.
Ejercicio Práctico
Ejercicio: Crea una nueva vista y plantilla que muestre una lista de artículos. Cada artículo debe tener un título, una descripción y una imagen.
Solución:
- Crear el Directorio de Plantillas y Archivos Estáticos:
- Contenido de
articles.html
:
<!-- templates/articles.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Lista de Artículos</title> <link rel="stylesheet" type="text/css" href="{% static 'css/articles.css' %}"> </head> <body> <h1>Lista de Artículos</h1> <div class="article"> <h2>Artículo 1</h2> <p>Descripción del artículo 1.</p> <img src="{% static 'images/article1.png' %}" alt="Artículo 1"> </div> <div class="article"> <h2>Artículo 2</h2> <p>Descripción del artículo 2.</p> <img src="{% static 'images/article2.png' %}" alt="Artículo 2"> </div> </body> </html>
- Contenido de
articles.css
:
/* static/css/articles.css */ body { font-family: Arial, sans-serif; background-color: #f0f0f0; text-align: center; padding: 50px; } h1 { color: #333; } .article { margin-bottom: 20px; } .article h2 { color: #555; } .article p { color: #777; }
- Crear la Vista y Configurar la URL:
# views.py from django.shortcuts import render def articles(request): return render(request, 'articles.html') # urls.py from django.urls import path from . import views urlpatterns = [ path('articles/', views.articles, name='articles'), ]
Conclusión
En esta sección, hemos aprendido cómo trabajar con plantillas y archivos estáticos en Django. Las plantillas nos permiten separar la lógica de la presentación, mientras que los archivos estáticos son esenciales para el diseño y la funcionalidad del frontend. Con estos conocimientos, estamos listos para crear aplicaciones web más complejas y visualmente atractivas.
En el próximo tema, exploraremos los modelos y las bases de datos en Django, lo que nos permitirá manejar datos de manera eficiente y estructurada.
Curso de Desarrollo Web con Django
Módulo 1: Introducción a Django
- ¿Qué es Django?
- Configuración del Entorno de Desarrollo
- Creando tu Primer Proyecto Django
- Entendiendo la Estructura del Proyecto Django
Módulo 2: Conceptos Básicos de Django
- Aplicaciones Django y Estructura del Proyecto
- Enrutamiento de URL y Vistas
- Plantillas y Archivos Estáticos
- Modelos y Bases de Datos
- Interfaz de Administración de Django
Módulo 3: Django Intermedio
- Manejo de Formularios
- Vistas Basadas en Clases
- Autenticación de Usuarios
- Middleware
- Carga de Archivos
Módulo 4: Django Avanzado
- Consultas Avanzadas con Django ORM
- Modelos de Usuario Personalizados
- Señales de Django
- Pruebas en Django
- Optimización del Rendimiento