Conceptos básicos de Django
10 ejemplos para empezar con Django 5.2: 7 básicos y 3 intermedios.
Prerrequisitos
uv pip install "django>=5.2"
django-admin startproject config .
python manage.py migrate- Django 5.2 tiene como objetivo Python 3.14.
- Usa
python manage.py runserverpara el desarrollo local.
Ejemplos básicos
1. Estructura de proyecto y aplicación
Configuración, URLs y un módulo de aplicación.
# config/urls.py
from django.contrib import admin
from django.urls import path
from hello import views
urlpatterns = [
path("admin/", admin.site.urls),
path("", views.home),
]- Los proyectos contienen la configuración; las aplicaciones contienen las funcionalidades.
- Conecta las vistas en el
urls.pyraíz. - Ejecuta migraciones antes de servir modelos de datos.
Relacionado: Modelos y el ORM - modelos de base de datos
2. Vista basada en función
Devuelve respuestas HTTP desde funciones de Python.
from django.http import JsonResponse
def home(request):
return JsonResponse({"message": "Hola, Django"})- Las vistas reciben
requestprimero. JsonResponsepara APIs sencillas.- Las vistas basadas en clases escalan mejor para mixins.
3. Patrones de URL con parámetros
Captura segmentos de ruta.
from django.urls import path
from . import views
urlpatterns = [path("users/<int:user_id>/", views.user_detail)]- Los convertidores validan los tipos de segmento.
- Los nombres permiten búsquedas inversas.
- Las barras finales son convencionales.
4. Módulo de configuración
Configura aplicaciones instaladas y base de datos.
# config/settings.py fragmento
INSTALLED_APPS = ["django.contrib.admin", "hello"]
DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "db.sqlite3"}}- Guarda secretos en variables de entorno.
- Divide la configuración por entorno en proyectos maduros.
- SQLite es suficiente solo para desarrollo local.
5. Sitio de administración
Interfaz de usuario CRUD integrada para modelos.
from django.contrib import admin
from .models import Item
admin.site.register(Item)- Registra modelos en
admin.site. - Personaliza las visualizaciones de lista en
ModelAdmin. - Protege la administración con autenticación robusta.
Relacionado: El Administrador - personalización
6. Plantillas
HTML renderizado en servidor con el lenguaje de plantillas de Django.
from django.shortcuts import render
def home(request):
return render(request, "home.html", {"title": "Django"})- Las plantillas residen en
templates/. - El diccionario de contexto pasa variables.
- Usa herencia de plantillas para diseños.
Relacionado: Plantillas y Formularios - formularios
7. Comandos de gestión
Tareas de CLI a través de manage.py.
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = "Comando de demostración"
def handle(self, *args, **options):
self.stdout.write("ok")- Coloca los comandos en
management/commands/. - Úsalos para mantenimiento compatible con cron.
- Mantén los comandos idempotentes.
Ejemplos intermedios
8. Hook de middleware
Procesa solicitudes globalmente.
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
]- El orden importa para sesiones y CSRF.
- Añade middleware personalizado con moderación.
- Prefiere decoradores de vista para preocupaciones localizadas.
Relacionado: Caché y Rendimiento - middleware de caché
9. AppConfig
Inicialización explícita de la aplicación.
from django.apps import AppConfig
class HelloConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "hello"- Usa el patrón
default_app_configa través deAppConfig. - Ejecuta
ready()para señales con cuidado. BigAutoFieldes el valor predeterminado para las claves primarias.
10. Vista de API JSON
Devuelve datos estructurados sin DRF.
from django.http import JsonResponse
from django.views.decorators.http import require_GET
@require_GET
def health(request):
return JsonResponse({"status": "ok"})- Los decoradores de métodos HTTP imponen verbos.
- DRF añade serializadores y autenticación.
- Mantén las vistas JSON ligeras.
Relacionado: Django REST Framework - viewsets
Versiones de la pila: Esta página se escribió para Python 3.14.0 (estable 3.14, mantenimiento 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ y uv 0.6+.