¡Ya tenemos nuestro proyecto Django creado y hasta vimos la página de bienvenida! Pero antes de empezar a construir nuestras propias funcionalidades, hay un paso importante que Django necesita que hagamos. Resulta que Django, de fábrica, ya viene con un montón de "cositas" útiles preconfiguradas.
Piensa en el panel de autenticación que mencionamos (para que los usuarios se registren e inicien sesión), o el mismísimo panel de administración que nos permitirá gestionar nuestro sitio. Todas estas funcionalidades necesitan guardar información en algún lado, ¿verdad? Y ese "lado" es la base de datos.
Las migraciones son como preparar los cimientos antes de construir las paredes de nuestra aplicación.
Django tiene un panel de administración increíblemente útil. Para acceder a él, con tu servidor de desarrollo corriendo (python manage.py runserver), simplemente agrega /admin al final de la dirección en tu navegador. Por ejemplo:
http://127.0.0.1:8000/admin
Si intentas hacer esto justo después de crear el proyecto, ¡sorpresa! Es muy probable que veas una página de error. Un error común que podría aparecer dice algo como que no encuentra la tabla django_session.
Un error típico si intentas acceder al admin antes de las migraciones. ¡No te asustes!
¿Qué pasó? Simple: Django necesita ciertas tablas en la base de datos para funcionar (como la tabla para guardar las sesiones de los usuarios, la tabla de usuarios, etc.), ¡pero todavía no las hemos creado!
Para solucionar esto y preparar nuestra base de datos, Django nos da otro comando mágico que usamos a través de nuestro amigo manage.py. Primero, si tienes el servidor corriendo, deténlo presionando Control + C en la terminal donde se está ejecutando.
Ahora, asegúrate de estar en la carpeta raíz de tu proyecto (donde está manage.py) y con tu entorno virtual activado. Luego, ejecuta:
python manage.py migrate
(O python3 manage.py migrate si es tu caso).
El comando migrate es el encargado de aplicar todas esas configuraciones de base de datos que Django trae por defecto y también las que nosotros creemos más adelante (¡ya llegaremos a eso!). Básicamente, le dice a Django: "Oye, revisa si hay alguna estructura de tabla que necesites crear o actualizar en la base de datos, y hazlo".
Al presionar Enter, verás que la terminal empieza a mostrar un montón de líneas que dicen "Applying..." o "Aplicando...". ¡Eso es bueno! Significa que Django está creando todas las tablas necesarias para sus aplicaciones internas (autenticación, sesiones, el panel de administración, etc.).
Así se ve la terminal mientras Django aplica las migraciones. Cada "OK" es una buena señal.
Una vez que el comando migrate termine y veas que todo salió "OK", ¡es hora de la revancha! Vuelve a correr tu servidor de desarrollo:
python manage.py runserver
Y ahora sí, ve a tu navegador y entra de nuevo a http://127.0.0.1:8000/admin.
¡Tachán! 🎉 Ahora deberías ver la página de inicio de sesión del panel de administración de Django. ¡Ya no hay error! Esto significa que las tablas necesarias se crearon correctamente en la base de datos.
¡El panel de administración de Django, listo para usar!
En el video del capítulo te muestro este proceso y el error común si olvidas migrar.
Django viene con aplicaciones internas que necesitan tablas en la base de datos. Para crear estas tablas (y las que definamos nosotros más adelante), usamos el comando python manage.py migrate (con el servidor detenido y el entorno virtual activado). Esto prepara la base de datos y permite que funcionalidades como el panel de administración (accesible en /admin) funcionen correctamente.
Aún no podemos entrar al panel de administración porque no hemos creado un usuario administrador. ¡Pero eso es exactamente lo que haremos en el siguiente capítulo!