En esta lección vamos a empezar un proyecto simple con Django llamado hello-django. A medida que avancemos en el curso, iremos agregándole funcionalidades. Es muy importante que sigas los pasos tú mismo en tu computadora y, si quieres, puedes hacer tus propios experimentos con el código.
Instalar Django
Ya tenemos la carpeta del proyecto y el entorno virtual creado. El primer paso real es instalar Django, el framework que vamos a usar. También vamos a necesitar un servidor WSGI (como Gunicorn 🦄) que nos ayudará a ejecutar el proyecto en entornos reales (producción).
Si usas uv, puedes instalar los paquetes así:
uv pip install django
uv pip install gunicorn --dev
Aquí estamos instalando:
django, nuestra dependencia principal.gunicorn, solo lo vamos a usar durante el desarrollo o pruebas, por eso usamos la opción--dev.
Después de esto, vas a tener disponibles dos comandos muy importantes:
| Comando | Qué hace |
|---|---|
django-admin |
Herramienta para crear y administrar proyectos Django |
gunicorn |
Servidor WSGI para ejecutar aplicaciones web (lo usamos al final del curso) |
Para comprobar que Django está instalado correctamente, simplemente ejecuta:
uv run django-admin version
Y te debería salir algo así:
3.0.4
Nos sirve cualquier versión desde la 3.0.0 en adelante.
Crear la base del proyecto
Vamos a generar los archivos necesarios usando:
uv run django-admin startproject hello_django .
Algunas cosas importantes de esta línea:
hello_djangoserá el nombre de nuestro paquete Python. En Python, se acostumbra usar guiones bajos (_) en vez de espacios.- El punto
.al final indica que queremos generar los archivos en la carpeta actual (por eso creamos una carpeta vacía antes).
Si todo salió bien, deberías tener esta estructura:
.
├── hello_django
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
¿Qué hace cada archivo?
| Archivo | Para qué sirve |
|---|---|
manage.py |
Herramienta para ejecutar acciones del proyecto como runserver o migraciones |
settings.py |
Todas las configuraciones del proyecto |
urls.py |
Lista de rutas del sitio web |
wsgi.py / asgi.py |
Puntos de inicio de la app cuando se ejecuta como WSGI o ASGI |
En este curso nos vamos a enfocar en settings.py y urls.py, pero conocer el resto también es útil.
Nuestra primera vista y plantilla
Más adelante vamos a ver con calma cómo funciona toda la arquitectura de Django. Por ahora, vamos a enfocarnos en que nuestro servidor muestre una página HTML básica.
Paso 1: Configurar la ruta
Vamos a editar el archivo hello_django/urls.py. Primero, importamos nuestro nuevo archivo de vistas:
from hello_django import views
Luego, editamos la lista urlpatterns para que quede así:
from django.urls import path
from hello_django import views
urlpatterns = [
path('', views.index),
# path('admin/', admin.site.urls),
]
Esto significa que cuando alguien entre a la página principal (/), Django va a llamar a la función index del archivo views.py.
Paso 2: Crear el archivo de vistas
Creamos el archivo hello_django/views.py y escribimos:
from django.shortcuts import render
def index(request):
return render(request, 'index.html', context={
'who': 'World',
})
Aquí usamos la función render() para:
- Buscar el archivo
index.html. - Enviarle datos a través del diccionario
context, que luego podemos mostrar dentro del HTML.
Paso 3: Agregar el template
Creamos una carpeta templates dentro de hello_django, y ahí dentro creamos el archivo index.html.
La estructura se verá así:
hello_django/
├── templates/
│ └── index.html
Ahora, escribimos este contenido en index.html:
<h1>Hello, {{ who }}!</h1>
El {{ who }} es una forma de “insertar” el valor del contexto. En este caso, mostrará "Hello, World!".
Paso 4: Informarle a Django dónde buscar templates
Para que Django sepa dónde encontrar esa carpeta templates, debemos agregar "hello_django" a la lista INSTALLED_APPS en el archivo settings.py.
Busca esta parte de settings.py:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
...
]
Y al final agrega:
INSTALLED_APPS = [
...
'hello_django',
]
Con eso bastará por ahora para que Django tome en cuenta nuestros templates.
Ejecutar la aplicación
Django trae un servidor de desarrollo incorporado. Para iniciarlo, usamos:
uv run python manage.py runserver
Este servidor es muy útil durante el desarrollo por varias razones:
- Se reinicia automáticamente si cambias algo en el código.
- No guarda nada en caché (útil cuando editas archivos HTML, CSS o JS).
- Es fácil de usar y rápido de iniciar.
Ejecutando con Gunicorn
Cuando pases tu app a producción, probablemente usarás Gunicorn. Debes ejecutar:
export DJANGO_SETTINGS_MODULE=hello_django.settings
uv run gunicorn hello_django.wsgi
Aquí hacemos dos cosas:
- Indicamos con
DJANGO_SETTINGS_MODULEqué archivo contiene las configuraciones del proyecto. - Ejecutamos
gunicorn, que iniciará la app a través del archivowsgi.py.
manage.py, no necesitas definir esa variable de entorno, ya que el script la establece automáticamente por ti.
Resumen
- Primero, creamos la carpeta y el entorno virtual; luego instalamos Django y Gunicorn.
- Generamos un proyecto base con
django-admin startproject. - Exploramos para qué sirven los archivos más importantes (
settings.py,urls.py, etc.). - Creamos nuestra primera vista (
views.index) que muestra una página HTML usando un template. - Los templates deben estar en una carpeta llamada
templatesdentro del paquete. - Django necesita saber dónde están los templates, agregamos el nombre del paquete a
INSTALLED_APPS. - Usamos
runserverdurante el desarrollo, pero para producción usamosgunicorn.
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.