Crear una aplicación Django
En Django, un proyecto es el contenedor global y las aplicaciones son módulos independientes con una responsabilidad concreta (blog, tienda, usuarios…). Un mismo proyecto puede tener tantas aplicaciones como sea necesario.
Para crear la primera aplicación dentro del proyecto ejecuta:
python manage.py startapp catalogo

Esto genera la siguiente estructura:
catalogo/
__init__.py
admin.py
apps.py
models.py
tests.py
views.py
migrations/
__init__.py
Registrar la aplicación
Django no detecta automáticamente las nuevas aplicaciones. Hay que registrarlas en INSTALLED_APPS dentro de settings.py. La forma recomendada es usar la cadena de configuración de AppConfig:
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Aplicación propia
'catalogo.apps.CatalogoConfig',
]
También es válido usar únicamente 'catálogo', pero la notación con AppConfig es más explícita y permite personalizar la aplicación en apps.py.
Primera vista funcional
Las vistas en Django son funciones (o clases) que reciben un HttpRequest y devuelven un HttpResponse. Abre catálogo/views.py y escribe la primera vista:
# catalogo/views.py
from django.http import HttpResponse
from django.shortcuts import render
def inicio(request):
"""Vista de inicio que muestra un mensaje de bienvenida."""
contexto = {
'titulo': 'Catálogo de productos',
'mensaje': 'Bienvenido a nuestra tienda',
}
return render(request, 'catalogo/inicio.html', contexto)
def salud(request):
"""Endpoint de comprobación del estado del servicio."""
return HttpResponse('OK', content_type='text/plain')
Configurar las URLs
Cada aplicación debe tener su propio archivo urls.py. Créalo en catálogo/urls.py:
# catalogo/urls.py
from django.urls import path
from . import views
app_name = 'catalogo'
urlpatterns = [
path('', views.inicio, name='inicio'),
path('salud/', views.salud, name='salud'),
]
El atributo app_name define el namespace de la aplicación, lo que permite referenciar URLs de forma inequívoca con reverse('catálogo:inicio').
Incluir las URLs en el proyecto
Para que Django procese las URLs de la aplicación hay que incluirlas en urls.py del proyecto:
# mi_proyecto/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('catalogo/', include('catalogo.urls', namespace='catalogo')),
]
Primera plantilla
Crea el directorio de plantillas dentro de la aplicación y escribe la plantilla inicio.html:
catalogo/
templates/
catalogo/
inicio.html
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<title>{{ titulo }}</title>
</head>
<body>
<h1>{{ titulo }}</h1>
<p>{{ mensaje }}</p>
</body>
</html>
Django busca plantillas en la carpeta templates/ de cada aplicación registrada siempre que APP_DIRS: True esté configurado en TEMPLATES.
Ejecutar y verificar
Inicia el servidor de desarrollo y abre el navegador en la URL correspondiente:
python manage.py runserver
# Accede a: http://127.0.0.1:8000/catalogo/
Si ves la página de bienvenida con el título y el mensaje, la primera aplicación está correctamente configurada. El endpoint /catálogo/salud/ debe devolver simplemente OK, útil para comprobaciones de disponibilidad.
Ciclo de vida de una petición
Cada vez que el navegador hace una petición a Django, el flujo es el siguiente:
- El servidor recibe la petición HTTP y la pasa al WSGI handler.
- Django recorre los middleware en orden.
- El sistema de routing compara la URL con los patrones de
urlpatterns. - Se ejecuta la vista asociada.
- La vista devuelve un
HttpResponseque recorre los middleware en orden inverso. - El servidor envía la respuesta al navegador.
Comprender este ciclo desde el principio facilita enormemente la depuración de problemas y el diseño de aplicaciones robustas.
Alan Sastre
Ingeniero de Software y formador, CEO en CertiDevs
Ingeniero de software especializado en Full Stack y en Inteligencia Artificial. Como CEO de CertiDevs, Django es una de sus áreas de expertise. Con más de 15 años programando, 6K seguidores en LinkedIn y experiencia como formador, Alan se dedica a crear contenido educativo de calidad para desarrolladores de todos los niveles.
Más tutoriales de Django
Explora más contenido relacionado con Django y continúa aprendiendo con nuestros tutoriales gratuitos.
Aprendizajes de esta lección
Crear una nueva aplicación Django con el comando startapp. Registrar correctamente la aplicación en INSTALLED_APPS. Escribir la primera vista funcional y devolver una respuesta HTTP. Definir URLs en el archivo urls.py de la aplicación e incluirlas en el proyecto. Ejecutar el servidor de desarrollo y verificar el resultado en el navegador.