Primera aplicación Django

Básico
Django
Django
Actualizado: 18/04/2026

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

Diagrama conceptual de Primera aplicación Django

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:

  1. El servidor recibe la petición HTTP y la pasa al WSGI handler.
  2. Django recorre los middleware en orden.
  3. El sistema de routing compara la URL con los patrones de urlpatterns.
  4. Se ejecuta la vista asociada.
  5. La vista devuelve un HttpResponse que recorre los middleware en orden inverso.
  6. 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 - Autor del tutorial

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.