Vamos a explicar cuales son los pasos necesarios para crear un proyecto y aplicación en Django y en qué consisten estos dos términos en Django y con esto presentar nuestro primer Hola Mundo en Django, que viene siendo la fase de entrada en cualquier lenguaje de programación como Python o framework.
Anteriormente hablamos un poco sobre este popular framework para Python conocido como Django; por lo tanto seguramente te debe chocar un poco el título de esta entrada en la cual seguimos creando cosas y con cosas me refiero a un proyecto y LUEGO una aplicación.
Crear un proyecto en Django
Vamos a comenzar creando el elemento global de todo que sería un proyecto; más adelante vamos a hablar sobre proyectos y aplicaciones y su concepción en Django; pero de momento, quédate con la idea de que un proyecto es el elemento más global que tenemos; vamos a alguna ubicación para crear nuestro proyecto en Django 3 y ejecutamos:
django-admin startproject firstProject
En dónde firstProyect
es el nombre del proyecto que estás creando de Django.
Entendiendo la estructura de un proyecto en Django
Ahora vamos a evaluar qué fue lo que se creó con el anterior comando; si entramos dentro de la carpeta llamada firstProyect o el nombre que definiste para el comando anterior veremos los siguientes archivos:
- manage.py: Una utilidad de la línea de comandos que le permite interactuar con este proyecto Django de diferentes formas y puedes obtener más información en la documentación oficial.
- __init__.py: Un archivo vacío que le indica a Python que este directorio debería ser considerado como un paquete Python.
- settings.py: Ajustes/configuración para este proyecto Django; nos define un conjunto de configuraciones que podemos aplicar sobre el proyecto de manera global.
- urls.py: Las declaraciones URL para este proyecto Django; desde aquí podemos (por ejemplo) cargar más archivos de URLs de otras aplicaciones o dependencias.
- asgi.py: Archivo de entrada para trabajar con servidores ASGI y realizar el deploy.
- wsgi.py: Archivo de entrada para trabajar con servidores WSGI y realizar el deploy.
Proyectos y aplicaciones
En el anterior bloque vimos cómo podemos crear un nuevo proyecto en Django y aquí la palabra clave, creamos un PROYECTO y como explicamos en esta misma entrada, un proyecto en Django consta de una o muchas aplicaciones que es lo que nosotros vamos a crear en este punto; vamos a crear al menos una aplicación para poder hacer algo interesante en nuestro proyecto recién creado; te dejo la documentación oficial para que obtengas más información sobre los proyectos y aplicaciones en Django.
Proyectos vs aplicaciones - ¿Cuál es la diferencia entre un proyecto y una aplicación?
- Una aplicación es una aplicación web que hace algo, por ejemplo, un sistema de registro web, una base de datos de registros públicos, una Api Rest, una app de venta de algo, etc.
- Un proyecto es una colección de configuraciones y aplicaciones para un sitio web en particular. Un proyecto puede contener múltiples aplicaciones. Una aplicación puede estar en múltiples proyectos.
Creando nuestra primera aplicación en Django
Bien, en este punto, finalmente vamos a crear una aplicación en Django; que como hablamos viene siendo el mecanismo para poder desarrollar nuevas funcionalidades en Django; en otras palabras, nuestra aplicación web. Para eso nuevamente vamos a apoyarnos en el PROYECTO que creamos anteriormente, específicamente con nuestra consola o terminal dentro del proyecto que creastes anteriormente; que en mi caso simplemente de llama firstProject
; y aquí ahora vamos a ejecutar el siguiente comando:
python manage.py startapp firstApp
Con este comando acabamos de crear nuestra primera aplicación y ya estamos listos para trabajar con al menos unas pocas capas de nuestro MTV cosa que iremos haciendo en las próximas entradas sobre Django.
Estructura de la aplicación
Si entramos dentro de la carpeta que creamos anteriormente cuyo nombre es de firstProyect
(que es nuestra aplicación en Django y que no es más que un módulo en Python):
- __init__.py: Archivo especial de Python que indica que esta carpeta es un módulo.
- admin.py: Archivo de Django en la cual podemos registrar modelos para emplearlos en una aplicación que nos ofrece Django para realizar la gestión de datos.
- apps.py: Archivo de configuración de la aplicación.
- migrations/: Carpeta desde la cual podemos gestionar las migraciones.
- models.py: Archivo desde el cual podemos crear los modelos de la aplicación y esta es una de las capas de nuestro MTV.
- tests.py: Archivo para realizar pruebas de la aplicación.
- views.py: Archivo para crear las funciones o vistas para hacer la lógica y es la capa de la lógica de negocio que se encarga de conectar la capa del modelo con la del template; esta viene siendo la capa de la vista o -parte- el controlador en nuestro MVC.
Por supuesto, estos son los archivos y carpetas iniciales que podemos extender para agregar más configuraciones como formularios, urls, etc.
Registrar la aplicación en el proyecto en Django
Como hablamos anteriormente, básicamente el proyecto viene siendo el elemento global y que permite contener una o muchas aplicaciones, como la llamada firstProyect
que creamos anteriormente; entonces, para poder emplear la aplicación a lo largo de nuestro proyecto, tenemos que registrar la aplicación dentro de nuestro proyecto; para esto, tenemos que abrir el archivo llamado settings.py y ubicar la opción llamada INSTALLED_APPS:
En mi caso luce como la siguiente:
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'firstApp'
]
Pero tu debes de preocuparte solamente de registrar la aplicación que acabas de crear:
INSTALLED_APPS = [
'firstApp'
]
Y ahora podemos emplear nuestra aplicación para poder desarrollar nuestras funcionalidades siguiendo el MTV que hablamos anteriormente.
Recuerda que en el curso de Django puedes obtener más información sobre todo lo que vemos aquí.
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter