- ¿Qué es una aplicación en Django?
- ¿Dónde estamos parados?
- Paso a paso: Crear una nueva aplicación
- Conectemos la aplicación al proyecto
- ¿Y las rutas? Agreguemos un urls.py en la app
- Integramos las rutas de la app en el proyecto
- Creamos la vista de ejemplo
Al principio, trabajar con Django parece fácil: tienes tu archivo views.py con algunas vistas y tu archivo urls.py con unas rutas. Pero a medida que el proyecto crece, todo se complica. ¿La solución? La descomposición, o separar el código en partes más pequeñas.
En Django, esto es más sencillo gracias a las aplicaciones o apps, que el propio framework nos facilita para organizar mejor el código.
¿Qué es una aplicación en Django?
models.py), vistas (views.py), URLs, plantillas y más.
Esto te ayuda a:
- Separar distintas funcionalidades del sitio
- Reutilizar partes de código en diferentes proyectos
- Evitar el caos cuando tienes muchas vistas o reglas de enrutamiento
Django mismo viene con aplicaciones incluidas —como auth o admin— que puedes usar directamente como bloques reutilizables.
¿Dónde estamos parados?
Hasta el momento, tenemos un proyecto llamado codica_django_blog. Django puede arrancar sin aplicaciones personalizadas, pero ya lo convertimos en una app cuando la agregamos en settings.INSTALLED_APPS.
Ahora vamos a crear una segunda aplicación para organizar las funcionalidades relacionadas con artículos.
Paso a paso: Crear una nueva aplicación
- Abre tu terminal
- Ubícate dentro del directorio del proyecto (donde está el
manage.py) - Ejecuta:
django-admin startapp articleEsto generará una nueva carpeta con estructura similar a esta:
codica_django_blog/article
├── admin.py
├── apps.py
├── __init__.py
├── migrations/
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
Por ahora solo nos centraremos en views.py y en configurar la app. Lo demás (models, migrations, tests) lo exploraremos más adelante.
Conectemos la aplicación al proyecto
Ahora vamos a decirle a Django que esta nueva app existe:
1️⃣ Abre codica_django_blog/article/apps.py
2️⃣ Modifica la clase ArticleConfig para que incluya el nombre completo del paquete:
# codica_django_blog/article/apps.py
class ArticleConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'codica_django_blog.article' # <- nombre completo
3️⃣ Luego, en codica_django_blog/settings.py, agrega la nueva app al listado de aplicaciones instaladas:
INSTALLED_APPS = [
...
'codica_django_blog',
'codica_django_blog.article', # <- nueva app
]
Ya con eso, Django reconoce nuestra aplicación.
¿Y las rutas? Agreguemos un urls.py en la app
Django no crea automáticamente un archivo urls.py dentro de la app, pero es buena práctica hacerlo si la aplicación va a tener varias rutas.
- Crea el archivo en
codica_django_blog/article/urls.py - Agrega lo siguiente:
# codica_django_blog/article/urls.py
from django.urls import path
from codica_django_blog.article import views
urlpatterns = [
path('', views.index), # Cuando accedan a /articles/
]
Aquí estamos asociando el path vacío ('') con la vista index. Más adelante podrás agregar más rutas.
Integramos las rutas de la app en el proyecto
Vamos ahora a conectar este nuevo archivo de rutas con las rutas del proyecto principal.
- Abre
codica_django_blog/urls.py - Modifica el archivo para que se vea así:
# codica_django_blog/urls.py
from django.contrib import admin
from django.urls import path, include
from codica_django_blog import views
urlpatterns = [
path('', views.index),
path('articles/', include('codica_django_blog.article.urls')), # <- nueva línea
path('admin/', admin.site.urls),
]
¿Qué acabamos de hacer?
Cada vez que un usuario entre a localhost:8000/articles/, Django va a redirigir la petición a las rutas definidas en codica_django_blog.article.urls.
Esto permite que una aplicación sea completamente autónoma, sin conflicto con las rutas principales del proyecto o de otras aplicaciones. Es muy útil cuando quieres reutilizar esa app en otros proyectos.
Creamos la vista de ejemplo
Finalmente, vamos a crear la vista index que devolvemos cuando se accede a /articles/:
# codica_django_blog/article/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse('article') # Respuesta básica
Con esto, si abres el navegador y visitas:
http://localhost:8000/articles/
Vas a ver en pantalla el texto:
article
Por ahora estamos devolviendo texto simple con HttpResponse. Más adelante veremos cómo usar plantillas HTML. Django también incluye otras respuestas como:
| Tipo de respuesta | ¿Para qué sirve? |
|---|---|
HttpResponse |
Texto plano o HTML |
JsonResponse |
Datos en formato JSON |
FileResponse |
Responder con archivos (PDFs, imágenes, etc.) |
Resumen
- Cuando tu proyecto Django crece, es mejor dividirlo en varias aplicaciones para organizar el código.
- Cada app funciona de manera independiente: puede tener sus propias vistas, URLs, modelos, plantillas, etc.
- Para que Django reconozca una app, debes:
- Asegurarte que
apps.pytenga el nombre completo del paquete - Agregarla a
settings.INSTALLED_APPS - Una buena práctica es que cada app tenga su propio archivo
urls.py - Usamos
include()en el archivo de rutas principal para conectar las rutas de la app - Creas una vista simple
indexque responde con texto para/articles/
Trabajo independiente
Crea y asegura tu aplicación
En esta actividad vamos a crear una aplicación en tu proyecto Django y asegurar su funcionalidad. Sigue estos pasos:
- Crea la aplicación
codica_django_blog.article. - Asegura la vista del ejercicio.
- Sube los cambios a Git con los comandos
git add,git commitygit push.
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.