Como crear un proyecto nuevo de Django
En este tutorial describo los pasos para crear un proyecto de Django usando la terminal.

Django es un framework desarrollado en Python. Antes de iniciar su instalación, es esencial que tengas Python ya instalado en tu computadora. Para hacerlo, puedes descargar la versión más reciente y estable desde el sitio oficial python.org. Una vez que hayas completado la instalación de Python, puedes verificar que todo esté en orden consultando la versión instalada mediante el siguiente comando:
python3 --version
Pasos para instalar Django
El primer paso es crear un directorio para tu proyecto y dentro del nuevo directorio debes crear un ambiente virtual. Un ambiente virtual en Python es una herramienta que nos ayuda a mantener separadas las dependencias requeridas por cada proyecto. Al asignar a cada proyecto un directorio propio podemos instalar diferentes paquetes sin interferir con otros ambientes virtuales o con la instalación global del sistema.
Los ambientes virtuales son útiles por:
Aislamiento: Si tienes varios proyectos y cada uno requiere diferentes versiones de paquetes, los ambientes virtuales te permiten mantener estas dependencias separadas y organizadas.
Evitar conflictos: En ocasiones, dos paquetes pueden requerir diferentes versiones de una misma dependencia. Al usar ambientes virtuales, puedes instalar la versión correcta para cada proyecto sin conflictos.
Reproducibilidad: Puedes especificar y mantener consistentes las versiones de las dependencias que tu proyecto requiere, lo cual facilita compartirlo o desplegarlo en un nuevo entorno.
Para trabajar con ambientes virtuales en Python, a menudo se utiliza venv o virtualenv. El módulo venv viene incluido en las versiones estándar de Python a partir de Python 3.3.
Para crear un nuevo ambiente virtual con venv, puedes seguir estos pasos:
Abre una terminal.
Navega al directorio del proyecto donde deseas crear el ambiente virtual.
Ejecuta:
python3 -m venv nombre_del_ambientePara el nombre del ambiente comunmente se utiliza la palabra venv igual que el nombre del módulo, pero este no es obligatorio, puedes utilizar cualquier nombre.
Activa el ambiente virtual:
En windows:
.\nombre_del_ambiente\Scripts\activateEn macOS o Linux
source nombre_del_ambiente/bin/activate
Una vez activado el ambiente, tu línea de comandos mostrará el nombre del ambiente virtual al principio, indicando que cualquier paquete que instales con pip se instalará en ese ambiente en lugar de la instalación global de Python.
(nombre_del_ambiente) foo@bar:~$
Para desactivar el ambiente y volver al Python global, simplemente escribe:
deactivate
Es importante recordar activar el ambiente virtual cada vez que trabajes en un proyecto que dependa de él.
Segundo paso, instalar Django en nuestro ambiente virtual, para instalar django usaremos pip ,es recomendable mantenerlo actualizado, para actualizar pip ejecuta el siguiente comando:
pip install --upgrade pip
Ya que tenemos actualizado pip procedemos a instalar django. Ejecuta el siguiente comando:
python3 -m pip install django
Este comando instalará la ultima versión estable de django, en el caso que necesites instalar una versión especifica de django debes ejecutar el siguiente comando:
pip install django==X.Y.Z
Donde X.Y.Z es la versión exacta de Django que deseas instalar. Por ejemplo, si deseas instalar Django versión 3.1.5, el comando sería:
pip install django==3.1.5
Recuerda: si estás utilizando un ambiente virtual (como es recomendado cuando trabajas con proyectos de Django para evitar conflictos entre dependencias), asegúrate de tener el ambiente activado antes de ejecutar el comando anterior.
Para verificar que django se ha instalado correctamente en tu ambiente virtual verifica la versión instalada con el siguiente comando:
python3 -m django --version
La respuesta es el número de versión instalada por ejemplo si instalaste django==3.1.5 la respuesta es:
3.1.5
Una vez que hayas instalado Django, puedes iniciar el nuevo proyecto siguiendo los siguientes pasos:
Crear un nuevo proyecto Django:
Ejecuta el siguiente comando, donde
nombre_del_proyectoes el nombre que deseas darle a tu proyecto:django-admin startproject nombre_del_proyectoEsto creará un nuevo directorio con el nombre
nombre_del_proyectoen tu ubicación actual, conteniendo la estructura básica de un proyecto Django.Navegar al directorio del proyecto:
Mueve tu terminal al directorio del nuevo proyecto:
cd nombre_del_proyectoDentro de este directorio, encontrarás una estructura de archivos y subdirectorios que componen la base de un proyecto Django. A continuación, te describo esta estructura:
nombre_del_proyecto/ │ ├── nombre_del_proyecto/ │ ├── __init__.py │ ├── asgi.py │ ├── settings.py │ ├── urls.py │ └── wsgi.py │ └── manage.pyDetallando cada archivo y directorio:
nombre_del_proyecto/(el directorio externo): Es solo un contenedor para tu proyecto. Puedes renombrarlo a lo que quieras.manage.py: Es un script de línea de comandos que te permite interactuar con tu proyecto de diversas maneras, como iniciar el servidor de desarrollo, crear migraciones, ejecutar pruebas, entre otros.nombre_del_proyecto/(el directorio interno): Este es el paquete Python actual de tu proyecto. Es importante no renombrar este subdirectorio.__init__.py: Este archivo vacío indica a Python que este directorio debe considerarse como un paquete o módulo, permitiendo que se puedan importar objetos desde él.asgi.py: Configuración para servidores ASGI (Asynchronous Server Gateway Interface) como Daphne. Esto permite que Django pueda manejar conexiones asíncronas.settings.py: Contiene la configuración de tu proyecto Django. Aquí defines cosas como la configuración de la base de datos, aplicaciones instaladas, middleware, plantillas y muchas otras opciones.urls.py: Define las URL patterns para tu proyecto. Básicamente, indica a Django qué vistas mostrar dependiendo de la ruta que se solicite.wsgi.py: Configuración para servidores WSGI (Web Server Gateway Interface) como Gunicorn. Es el punto de entrada estándar para servir tu aplicación en producción.
Esta es la estructura básica creada con startproject. A medida que tu proyecto crezca, agregarás más archivos y directorios a esta estructura, como directorios para plantillas, archivos estáticos, medios, y más. Además, cuando creas aplicaciones con startapp, cada una tendrá su propia estructura interna de directorios y archivos.
Ejecutar el servidor de desarrollo:
Django viene con un servidor de desarrollo ligero que te permite visualizar tu proyecto mientras trabajas en él. Puedes iniciar este servidor con el siguiente comando:
python manage.py runserverPor defecto, el servidor se inicia en el puerto 8000. Para ver tu proyecto, abre un navegador y dirígete a
http://127.0.0.1:8000. Deberías ver una página de bienvenida de Django, indicando que el proyecto se ha creado y está funcionando correctamente.Cuando ejecutas el servidor de desarrollo de Django por primera vez
python manage.py runserverjusto después de haber creado un proyecto nuevo, es común recibir advertencias relacionadas con las migraciones. Estas advertencias suelen indicar que no has aplicado las migraciones iniciales de Django.El motivo es que, al crear un nuevo proyecto, Django incluye algunas aplicaciones predeterminadas (como auth, contenttypes, sessions, admin, entre otras) que tienen modelos definidos y, por ende, requieren que sus estructuras se creen en la base de datos. Sin embargo, cuando el proyecto es creado, estas estructuras todavía no existen en la base de datos.
La advertencia suele ser como:
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them.Esto no significa que hay un error per se en tu proyecto, solo es una indicación de que necesitas establecer la base de datos inicial para las aplicaciones integradas.
Para resolverlo ejecuta el comando:
python manage.py migrateEsto aplicará todas las migraciones pendientes, configurando la base de datos con las tablas y estructuras necesarias para las aplicaciones predeterminadas.
Una vez hecho esto, si vuelves a ejecutar
python manage.py runserver, no deberías ver advertencias relacionadas con migraciones.Es importante notar que, aunque estas advertencias no impiden que el servidor de desarrollo se ejecute y puedes visitar el sitio web en el navegador, ciertas funcionalidades (como el panel de administración) no funcionarán correctamente hasta que las migraciones iniciales sean aplicadas.
Por defecto, Django utiliza SQLite como sistema de gestión de bases de datos (DBMS). SQLite es una base de datos relacional que almacena los datos en un único archivo en el disco, lo que la hace excelente para el desarrollo debido a su simplicidad y portabilidad.
En el archivosettings.pyde un proyecto Django recién creado, verás una configuración de base de datos similar a la siguiente:DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / "db.sqlite3", } }ENGINEindica el backend de la base de datos que Django debe usar, en este caso,django.db.backends.sqlite3para SQLite.NAMEespecifica la ruta y el nombre del archivo donde se almacenarán los datos de SQLite. Por defecto, esdb.sqlite3en el directorio base de tu proyecto.Si bien SQLite es adecuado para el desarrollo, es importante considerar otros sistemas de gestión de bases de datos más robustos, como PostgreSQL, MySQL o MariaDB, cuando trasladas tu proyecto a un entorno de producción. Django ofrece soporte integrado para estos DBMS, y cambiar entre ellos implica ajustes mínimos en la configuración
DATABASESensettings.py.Crear un usuario administrativo (Superusuario):
Para crear el primer usuario administrativo (o superusuario) en Django, que tendrá acceso total al sitio de administración de Django, sigue los siguientes pasos:
Crea el superusuario.
Ejecuta el siguiente comando:
python manage.py createsuperuserSigue las instrucciones en la consola.
Se te pedirá que introduzcas un nombre de usuario, dirección de correo electrónico y una contraseña. Asegúrate de recordar o guardar en un lugar seguro esta contraseña, ya que la necesitarás para acceder al sitio administrativo.
Nota: Si, por alguna razón, deseas especificar el nombre de usuario, correo electrónico o contraseña directamente en el comando, puedes hacerlo de la siguiente manera:
python manage.py createsuperuser --username=john --email=john@example.comLuego se te pedirá que ingreses una contraseña.
Accede al sitio administrativo.
Una vez que hayas creado el superusuario, puedes iniciar tu servidor de desarrollo
python manage.py runservery luego acceder al sitio administrativo en tu navegador, por lo general en la direcciónhttp://127.0.0.1:8000/admin/. Utiliza las credenciales del superusuario que acabas de crear para iniciar sesión.
Ahora tendrás acceso completo al panel de administración de Django y podrás gestionar tus modelos, usuarios y grupos, entre otras cosas.
Iniciar una nueva aplicación (opcional):
Django utiliza el concepto de "aplicaciones" para ayudar a modularizar el código. Una aplicación es simplemente un módulo de Django que realiza una función específica. Por ejemplo, podrías tener una aplicación para manejar la autenticación de usuarios, otra para manejar el blog, etc.
Para crear una nueva aplicación, usa el siguiente comando, donde
nombre_de_la_appes el nombre de tu aplicación:python manage.py startapp nombre_de_la_appEsto creará un nuevo directorio con el nombre
nombre_de_la_appdentro de tu proyecto, conteniendo la estructura básica de una aplicación Django.A continuación, te describo la estructura básica generada:
nombre_de_la_app/ │ ├── migrations/ │ └── __init__.py │ ├── __init__.py ├── admin.py ├── apps.py ├── models.py ├── tests.py └── views.pyA continuación, un breve resumen de cada archivo y directorio:
__init__.py: Este archivo vacío indica a Python que el directorio debe considerarse como un paquete o módulo. Gracias a este archivo, puedes importar objetos desde otros módulos dentro de esta aplicación.migrations/: Este directorio almacena las migraciones de la base de datos relacionadas con la aplicación. Las migraciones son cómo Django guarda los cambios que realizas en tus modelos (agregar un campo, eliminar un modelo, etc.) para luego aplicarlos a la base de datos.__init__.py: Al igual que el archivo anterior, este archivo vacío convierte el directoriomigrationsen un paquete o módulo de Python.
admin.py: Aquí defines el comportamiento y la apariencia de tu aplicación en el sitio administrativo de Django. Es decir, cómo se mostrarán tus modelos y otros componentes relacionados en la interfaz de administración que Django proporciona automáticamente.apps.py: Contiene la configuración de la aplicación. Por defecto, solo contiene una clase que representa la configuración de esta aplicación en particular.models.py: Define los modelos de tu aplicación. Un modelo en Django representa una tabla en la base de datos y define los campos y comportamientos esenciales de los datos que deseas almacenar.tests.py: Puedes escribir pruebas unitarias para tu aplicación aquí. Django tiene su propio framework de pruebas que facilita escribir y ejecutar pruebas para tu código.views.py: Define las vistas de tu aplicación. En Django, una vista es una función o clase que toma una solicitud web y devuelve una respuesta. Las vistas se encargan de procesar los datos y prepararlos para ser mostrados en una plantilla o devolverlos como JSON, entre otras cosas.
Con el tiempo, es posible que agregues más archivos y directorios a esta estructura básica, dependiendo de las necesidades de tu aplicación, como forms.py para formularios, urls.py para las rutas específicas de la aplicación, directorios de plantillas, archivos estáticos, etc.
Después de crear una nueva aplicación en tu proyecto Django, probablemente definas algunos modelos en el archivo models.py de esa aplicación. Una vez que hayas definido tus modelos, sigue estos pasos para crear y aplicar las migraciones:
Crear archivos de migración.
Luego de realizar cambios en tus modelos, necesitas generar un archivo de migración para esos cambios. Usa el siguiente comando para hacerlo:python manage.py makemigrations nombre_de_la_appEn este comando, reemplaza
nombre_de_la_appcon el nombre real de tu aplicación. Esto generará archivos de migración en el directoriomigrations/de tu aplicación que describen cómo hacer (y deshacer) los cambios que has hecho en los modelos.Revisar las migraciones (opcional pero recomendado):
Es una buena idea echar un vistazo a los archivos de migración generados en
nombre_de_la_app/migrations/para asegurarte de que Django ha interpretado tus cambios de la manera que esperabas.Aplicar migraciones:
Una vez creados los archivos de migración, debes aplicarlos para reflejar los cambios en la base de datos:
python manage.py migrateEste comando aplicará todas las migraciones pendientes, pero si solo deseas aplicar las migraciones de tu nueva aplicación, puedes especificarlo:
python manage.py migrate nombre_de_la_appY con eso, deberías haber creado y aplicado con éxito las migraciones para tu nueva aplicación en Django.
No olvides que cada vez que realices cambios en tus modelos, deberás repetir este proceso para asegurarte de que la base de datos refleje esos cambios.
¡Gracias por acompañarnos en este pequeño tutorial sobre Django! Espero que sea de gran ayuda para tus proyectos. Recuerda que el aprendizaje es un viaje continuo, y hay mucho más por descubrir en el mundo de Django y el desarrollo web. Mantente atento, porque pronto regresaremos con más tutoriales, consejos y trucos para ayudarte en tu camino como desarrollador. ¡Hasta la próxima!