Volver a la página principal
miércoles 16 octubre 2024
8

Cómo usar vistas en Django

Las views en Django son funciones o clases que gestionan las solicitudes (requests) que hace un usuario y devuelven las respuestas (responses) correspondientes. Las vistas son el enlace entre los modelos (base de datos) y las plantillas (HTML), permitiendo renderizar datos dinámicos en páginas web.

¿Qué es una view en Django?

Una view es una función de Python o una clase que recibe una solicitud web (request), procesa los datos necesarios, y devuelve una respuesta (response), que generalmente incluye un HTML renderizado, un JSON o una redirección. Las vistas son fundamentales en el patrón MVC (Modelo-Vista-Controlador) de Django, siendo el "controlador" que define la lógica de negocio.

Tipos de vistas en Django

Django ofrece dos enfoques para definir vistas: funciones y clases.

Vistas basadas en funciones

Las vistas basadas en funciones (FBV) son simples y fáciles de entender. Se definen como funciones que reciben un objeto request y devuelven un HttpResponse.

Ejemplo:

from django.http import HttpResponse

def mi_vista(request):
    return HttpResponse("¡Hola, mundo!")

Vistas basadas en clases

Las vistas basadas en clases (CBV) son más reutilizables y modulares. Django ofrece clases genéricas para las operaciones más comunes, como mostrar listas o manejar formularios.

Ejemplo de vista basada en clase:

from django.views import View
from django.http import HttpResponse

class MiVista(View):
    def get(self, request):
        return HttpResponse("¡Hola desde una vista basada en clase!")

Vistas genéricas basadas en clases

Django también ofrece vistas genéricas, que simplifican operaciones comunes como mostrar detalles de un objeto o listar elementos.

Ejemplo:

from django.views.generic import ListView
from .models import Persona

class ListaPersonasView(ListView):
    model = Persona
    template_name = 'personas_lista.html'

Algunos ejemplos

1. Renderizar una plantilla en una vista basada en función:

from django.shortcuts import render

   def inicio(request):
       return render(request, 'inicio.html')

2. Vista con datos del modelo:

from django.shortcuts import render
   from .models import Persona

   def lista_personas(request):
       personas = Persona.objects.all()
       return render(request, 'personas.html', {'personas': personas})

3. Vista basada en clase para detalles de un objeto:

from django.views.generic import DetailView
   from .models import Persona

   class PersonaDetalleView(DetailView):
       model = Persona
       template_name = 'persona_detalle.html'

Referencia oficial

Para más detalles sobre las vistas en Django, visita la documentación oficial de Django.

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer