En Django, los métodos comunes son funciones predefinidas que puedes utilizar en tus modelos, vistas y formularios para realizar tareas frecuentes como manejar consultas a la base de datos, procesar solicitudes HTTP o manipular datos. Estos métodos son esenciales para aprovechar la funcionalidad de Django y facilitar el desarrollo.
En Django, las vistas pueden utilizar métodos comunes para manejar solicitudes HTTP y devolver respuestas adecuadas. Estos métodos ayudan a procesar datos, redirigir usuarios, o lanzar errores según sea necesario.
Devuelve una respuesta HTTP básica.
from django.http import HttpResponse
def mi_vista(request):
return HttpResponse("Hola, mundo") Devuelve una respuesta renderizada basada en un template y un contexto.
from django.shortcuts import render
def mi_vista(request):
return render(request, 'mi_template.html', {'variable': 'valor'}) Redirige a una URL específica o a otra vista.
from django.shortcuts import redirect
def mi_vista(request):
return redirect('nombre_ruta') get_object_or_404()Obtiene un objeto o lanza un error 404 si no se encuentra.
from django.shortcuts import get_object_or_404
from .models import MiModelo
def mi_vista(request, id):
obj = get_object_or_404(MiModelo, id=id)
return render(request, 'detalle.html', {'obj': obj}) Http404()Lanza una excepción 404 manualmente.
from django.http import Http404
def mi_vista(request):
raise Http404("Página no encontrada") Django proporciona varios métodos para interactuar con la base de datos a través de los modelos. A continuación, se describen los más utilizados:
# Recuperar todos los objetos del modelo
MiModelo.objects.all()
# Filtrar objetos según condiciones específicas
MiModelo.objects.filter(campo='valor')
# Recuperar un único objeto. Lanza un error si no existe o si hay más de uno
MiModelo.objects.get(id=1)
# Crear y guardar un nuevo objeto en la base de datos
obj = MiModelo.objects.create(campo='valor')
# Actualizar objetos que cumplen con una condición específica
MiModelo.objects.filter(campo='valor').update(campo_nuevo='nuevo_valor')
# Eliminar un objeto de la base de datos
obj = MiModelo.objects.get(id=1)
obj.delete() all(): Ideal para listar todos los registros.filter(): Devuelve un queryset, útil para trabajar con múltiples registros.get(): Devuelve exactamente un registro. Lanza una excepción si no encuentra ninguno o si hay más de uno.create(): Simplifica la creación y guardado de objetos.update(): Se aplica directamente al queryset filtrado, afectando a múltiples objetos si corresponde.delete(): Elimina objetos, ya sea uno específico o todos los seleccionados en un queryset.Django proporciona métodos útiles para validar, procesar y manejar formularios. Aquí están los más utilizados:
# Verificar si un formulario es válido
if form.is_valid():
form.save()
# Guardar los datos del formulario en la base de datos
form.save()
# Acceder a los datos validados del formulario
data = form.cleaned_data['campo']
# Consultar los errores de validación del formulario
errores = form.errors form.is_valid(): Comprueba si los datos ingresados cumplen con las reglas de validación del formulario. Devuelve True si es válido.form.save(): Guarda los datos del formulario directamente en la base de datos (si está asociado a un modelo).form.cleaned_data: Contiene los datos procesados y validados del formulario, listos para usar.form.errors: Devuelve un diccionario con los errores de validación. Es útil para mostrar mensajes de error al usuario.Django proporciona métodos útiles para definir y gestionar rutas en tu aplicación.
path():Define rutas simples y legibles para tu aplicación.
from django.urls import path
from . import views
urlpatterns = [
path('inicio/', views.inicio, name='inicio'), # Ruta simple
] re_path():Permite definir rutas más complejas utilizando expresiones regulares. Útil para patrones avanzados.
from django.urls import re_path
from . import views
urlpatterns = [
re_path(r'^articulo/(?P<slug>[-w]+)/$', views.articulo, name='articulo'), # Ruta con regex
] Django ofrece herramientas para personalizar y gestionar modelos desde su panel de administración.
admin.site.register():Permite registrar un modelo en el administrador para que pueda gestionarse.
from django.contrib import admin
from .models import MiModelo
admin.site.register(MiModelo) # Registrar el modelo list_display:Especifica los campos que se mostrarán en la lista de objetos en el administrador.
class MiModeloAdmin(admin.ModelAdmin):
list_display = ('campo1', 'campo2') # Campos visibles en la lista
admin.site.register(MiModelo, MiModeloAdmin) # Registrar con configuración personalizada search_fields:Añade un cuadro de búsqueda para filtrar objetos según los campos especificados.
class MiModeloAdmin(admin.ModelAdmin):
search_fields = ['campo1'] # Campo utilizado para búsquedas
admin.site.register(MiModelo, MiModeloAdmin) # Registrar con búsqueda habilitada Las migraciones permiten mantener la base de datos sincronizada con los cambios realizados en los modelos.
makemigrations:Genera archivos de migración a partir de los cambios realizados en los modelos.
python manage.py makemigrations # Crear archivos de migración migrate:Aplica las migraciones pendientes a la base de datos, actualizando su estructura según los cambios.
python manage.py migrate # Aplicar migraciones Django ORM facilita la manipulación de bases de datos con métodos para realizar operaciones complejas.
aggregate():Realiza operaciones de agregación sobre un conjunto de objetos, como sumas, promedios y más.
from django.db.models import Sum
total = MiModelo.objects.aggregate(Sum('campo')) # Sumar los valores de un campo annotate():Permite agregar valores agregados a cada objeto en una consulta, como contar registros relacionados.
from django.db.models import Count
# Añadir un contador a cada objeto
lista = MiModelo.objects.annotate(num_items=Count('items'))