En este tema, exploraremos cómo Django organiza los proyectos y las aplicaciones dentro de un proyecto. Comprender esta estructura es fundamental para desarrollar aplicaciones web robustas y escalables.
¿Qué es una Aplicación Django?
Una aplicación en Django es una unidad de funcionalidad que puede ser reutilizada en diferentes proyectos. Cada aplicación tiene un propósito específico, como manejar la autenticación de usuarios, gestionar un blog, o procesar pagos.
Características de una Aplicación Django:
- Reutilizable: Puede ser utilizada en múltiples proyectos.
- Independiente: Funciona de manera autónoma y no depende de otras aplicaciones.
- Modular: Facilita la organización del código y la colaboración en equipos.
Estructura de un Proyecto Django
Un proyecto Django es una colección de configuraciones y aplicaciones para un sitio web. La estructura básica de un proyecto Django se ve así:
Desglose de Archivos y Directorios:
-
manage.py: Un script de línea de comandos que permite interactuar con el proyecto Django. Se utiliza para ejecutar comandos como iniciar el servidor de desarrollo, crear aplicaciones, y realizar migraciones de bases de datos.
-
myproject/: El directorio del proyecto principal que contiene las configuraciones globales del proyecto.
-
init.py: Un archivo vacío que indica a Python que este directorio debe ser tratado como un paquete.
-
settings.py: Contiene todas las configuraciones del proyecto, como la configuración de la base de datos, las aplicaciones instaladas, y las configuraciones de middleware.
-
urls.py: Define las rutas URL para el proyecto. Aquí se incluyen las rutas de las aplicaciones.
-
wsgi.py: Un punto de entrada para los servidores web compatibles con WSGI para servir tu proyecto Django.
-
Creando una Aplicación Django
Para crear una nueva aplicación dentro de tu proyecto Django, utiliza el siguiente comando:
Esto creará una estructura de directorios como la siguiente:
Desglose de Archivos y Directorios de una Aplicación:
- init.py: Indica que este directorio debe ser tratado como un paquete Python.
- admin.py: Aquí se registran los modelos para que aparezcan en la interfaz de administración de Django.
- apps.py: Configuración de la aplicación.
- models.py: Define los modelos de datos de la aplicación.
- tests.py: Contiene las pruebas unitarias para la aplicación.
- views.py: Define las vistas que manejan las solicitudes HTTP.
- migrations/: Contiene los archivos de migración de la base de datos.
Integrando la Aplicación en el Proyecto
Para que Django reconozca la nueva aplicación, debes agregarla a la lista INSTALLED_APPS
en settings.py
:
Ejemplo Práctico
Vamos a crear una aplicación simple llamada blog
y agregarla a nuestro proyecto.
-
Crear la Aplicación:
python manage.py startapp blog
-
Agregar la Aplicación a
INSTALLED_APPS
:# myproject/settings.py INSTALLED_APPS = [ ... 'blog', ... ]
-
Definir un Modelo en
models.py
:# blog/models.py from django.db import models class Post(models.Model): title = models.CharField(max_length=100) content = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.title
-
Registrar el Modelo en
admin.py
:# blog/admin.py from django.contrib import admin from .models import Post admin.site.register(Post)
-
Crear y Aplicar Migraciones:
python manage.py makemigrations python manage.py migrate
-
Definir una Vista en
views.py
:# blog/views.py from django.shortcuts import render from .models import Post def post_list(request): posts = Post.objects.all() return render(request, 'blog/post_list.html', {'posts': posts})
-
Configurar la URL en
urls.py
:# blog/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.post_list, name='post_list'), ]
-
Incluir la URL de la Aplicación en el Proyecto:
# myproject/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('blog/', include('blog.urls')), ]
Ejercicio Práctico
Objetivo: Crear una aplicación llamada portfolio
que gestione proyectos de un portafolio.
-
Crear la Aplicación:
python manage.py startapp portfolio
-
Agregar la Aplicación a
INSTALLED_APPS
:# myproject/settings.py INSTALLED_APPS = [ ... 'portfolio', ... ]
-
Definir un Modelo
Project
enmodels.py
:# portfolio/models.py from django.db import models class Project(models.Model): name = models.CharField(max_length=100) description = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name
-
Registrar el Modelo en
admin.py
:# portfolio/admin.py from django.contrib import admin from .models import Project admin.site.register(Project)
-
Crear y Aplicar Migraciones:
python manage.py makemigrations python manage.py migrate
-
Definir una Vista
project_list
enviews.py
:# portfolio/views.py from django.shortcuts import render from .models import Project def project_list(request): projects = Project.objects.all() return render(request, 'portfolio/project_list.html', {'projects': projects})
-
Configurar la URL en
urls.py
:# portfolio/urls.py from django.urls import path from . import views urlpatterns = [ path('', views.project_list, name='project_list'), ]
-
Incluir la URL de la Aplicación en el Proyecto:
# myproject/urls.py from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('portfolio/', include('portfolio.urls')), ]
Conclusión
En esta sección, hemos aprendido sobre la estructura de un proyecto Django y cómo crear e integrar aplicaciones dentro de un proyecto. Este conocimiento es esencial para organizar y gestionar el código de manera eficiente en proyectos Django. En el próximo tema, exploraremos el enrutamiento de URL y las vistas en Django.
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