Como Crear Un CRUD con Django 4 (Python 3.11) y Bootstrap 5 – Parte 3

Demo

En la parte anterior instalamos un paquete que nos permite utilizar MySQL en Django Framework, este paquete nos facilita muchas configuraciones, personalmente recuerdo que en versiones anteriores de Django, necesitaba realizar configuraciones adicionales que si bien es parte de ser programador, pero la comunidad ha simplificado la tarea. Y es que el conocimiento y varias herramienta en la nube son colectivas. En esta Parte 3 continuamos con el tutorial Como Crear Un CRUD con Django 4 (Python 3.11) y Bootstrap 5, vamos con ello.

Partes

Antes de continuar te invito a leer los siguientes artículos:

Asimismo, te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casa“La Inteligencia Artificial (IA) y el Machine Learning (ML) Siempre Trabajan de la Mano” (Anchor Podcast)

Spotify: Sound Cloud: Apple Podcasts Anchor Podcasts

Bien ahora continuemos con el Post: Como Crear Un CRUD con Django 4 (Python 3.11) y Bootstrap 5 – Parte 3. 

Vistas Genéricas

Django Framework trabaja sobre la arquitectura MTV (Model Template View) que traducido al español significa Modelo Plantilla Vista. Cuando creamos este proyecto, Django nos generó un archivo llamado views.py en donde podemos definir las vistas y otras tares para nuestro proyecto. Django nos permite trabajar con vistas genéricas de su propio core, estas vistas genéricas nos permiten realizar de manera ágil ciertas tareas en nuestro proyecto sin escribir mucho código.

El termino CRUD significa Create, Read, Update y Delete, por ende usaré las siguientes vistas genéricas:

  • ListView (Para listar en la vista principal, todos los registros de la tabla jugos)
  • DetailView (Leer)
  • CreateView (Crear)
  • UpdateView (Actualizar)
  • DeleteView (Eliminar)

Abro el archivo llamado views.py que se encuentra en cruddjango4 > jugos > views.py 

/cruddjango4 
    ├── /cruddjango4  
    ├── /jugos 
        ├── /__pycache__
        ├── /migrations
        ├── /static
        ├── __init__.py
        ├── admin.py
        ├── apps.py
        ├── models.py
        ├── tests.py
        ├── views.py // Abro este archivo 
    ├── db.sqlite3
    ├── manage.py 
├── /miev

En el archivo views.py instancio las vistas genéricas de Django y mi modelo Jugos el cual configuramos dentro del archivo models.py en la Parte 2 de este tutorial: 

from django.shortcuts import render

# Instanciamos las vistas genéricas de Django 
from django.views.generic import ListView, DetailView 
from django.views.generic.edit import CreateView, UpdateView, DeleteView
 
# Instanciamos el modelo 'Jugos' para poder usarlo en nuestras Vistas CRUD
from .models import Jugos

Ahora voy a instanciar 3 utilidades necesarias para este proyecto, estas son reverse, messages y forms. He colocado comentarios para explicar que hace cada una de ellas: 

# Nos sirve para redireccionar despues de una acción revertiendo patrones de expresiones regulares 
from django.urls import reverse
 
# Habilitamos el uso de mensajes en Django
from django.contrib import messages 
 
# Habilitamos los mensajes para class-based views 
from django.contrib.messages.views import SuccessMessageMixin 
 
# Habilitamos los formularios en Django
from django import forms

Paso seguido, crearé unas clases para poder usar las vistas genéricas de Django: ListView, DetailView, CreateView, UpdateView y DeleteView.

Listado de Registros o Jugos

En esta vista vamos a mostrar en una tabla de la vista principal, todos los registros almacenados en la base de datos del sistema CRUD. Creo una clase con el nombre JugosListado la cual usará la vista genérica ListView

class JugosListado(ListView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py'

Ahora crearé las vistas para las tareas CRUD (CRUD son Create, Read, Update y Delete). 

Crear (Create)

Creo una clase con el nombre JugoCrear que usará la vista genérica CreateView en donde mostraremos un formulario para crear un nuevo registro o jugo, en el código colocare unos comentarios que explican para que sirve cada línea del código:

class JugoCrear(SuccessMessageMixin, CreateView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py'
    form = Jugos # Definimos nuestro formulario con el nombre de la clase o modelo 'Jugos'
    fields = "__all__" # Le decimos a Django que muestre todos los campos de la tabla 'jugos' de nuestra Base de Datos 
    success_message = 'Jugo Creado Correctamente !' # Mostramos este Mensaje luego de Crear un Jugo
 
    # Redireccionamos a la página principal luego de crear un registro o jugo
    def get_success_url(self):        
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

Leer (Read)

Para esta tarea creo una clase con el nombre JugoDetalle que usará la vista genérica DetailView la cual se encargará de mostrar los detalles de un jugo o registro: 

class JugoDetalle(DetailView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py'

Actualizar (Update)

Creo una clase con el nombre JugoActualizar que usará la vista genérica UpdateView, en esta vista mostraremos un formulario para actualizar un jugo o registro, obviamente de la Base de Datos. Asimismo en el código colocare unos comentarios que explican para que sirve cada línea del código: 

class JugoActualizar(SuccessMessageMixin, UpdateView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' 
    form = Jugos # Definimos nuestro formulario con el nombre de la clase o modelo 'Jugos' 
    fields = "__all__" # Le decimos a Django que muestre todos los campos de la tabla 'jugos' de nuestra Base de Datos 
    success_message = 'Jugo Actualizado Correctamente !' # Mostramos este Mensaje luego de Editar un Jugo 
 
    # Redireccionamos a la página principal luego de actualizar un registro o jugo 
    def get_success_url(self):               
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

Eliminar (Delete)

Por último creo una clase con el nombre JugoEliminar que hara uso de la vista genérica DeleteView, esta vista la usaremos para eliminar un registro o jugo de nuestra base de datos, especificamente de la tabla jugos:

class JugoEliminar(SuccessMessageMixin, DeleteView): 
    model = Jugos 
    form = Jugos
    fields = "__all__"     

    # Redireccionamos a la página principal luego de eliminar un registro o jugo
    def get_success_url(self): 
        success_message = 'Jugo Eliminado Correctamente !' # Mostramos este Mensaje luego de Editar un Jugo
        messages.success (self.request, (success_message))       
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

A continuación el código completo del archivo views.py

from django.shortcuts import render

# Instanciamos las vistas genéricas de Django 
from django.views.generic import ListView, DetailView 
from django.views.generic.edit import CreateView, UpdateView, DeleteView
 
# Instanciamos el modelo 'Jugos' para poder usarlo en nuestras Vistas CRUD
from .models import Jugos 

# Nos sirve para redireccionar despues de una acción revertiendo patrones de expresiones regulares 
from django.urls import reverse
 
# Habilitamos el uso de mensajes en Django
from django.contrib import messages 
 
# Habilitamos los mensajes para class-based views 
from django.contrib.messages.views import SuccessMessageMixin 
 
# Habilitamos los formularios en Django
from django import forms


class JugosListado(ListView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' 

class JugoCrear(SuccessMessageMixin, CreateView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py'
    form = Jugos # Definimos nuestro formulario con el nombre de la clase o modelo 'Jugos'
    fields = "__all__" # Le decimos a Django que muestre todos los campos de la tabla 'jugos' de nuestra Base de Datos 
    success_message = 'Jugo Creado Correctamente !' # Mostramos este Mensaje luego de Crear un Jugo
 
    # Redireccionamos a la página principal luego de crear un registro o jugo
    def get_success_url(self):        
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

class JugoDetalle(DetailView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' 


class JugoActualizar(SuccessMessageMixin, UpdateView): 
    model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' 
    form = Jugos # Definimos nuestro formulario con el nombre de la clase o modelo 'Jugos' 
    fields = "__all__" # Le decimos a Django que muestre todos los campos de la tabla 'jugos' de nuestra Base de Datos 
    success_message = 'Jugo Actualizado Correctamente !' # Mostramos este Mensaje luego de Editar un Jugo 
 
    # Redireccionamos a la página principal luego de actualizar un registro o jugo 
    def get_success_url(self):               
        return reverse('leer') # Redireccionamos a la vista principal 'leer'


class JugoEliminar(SuccessMessageMixin, DeleteView): 
    model = Jugos 
    form = Jugos
    fields = "__all__"     

    # Redireccionamos a la página principal luego de eliminar un registro o jugo
    def get_success_url(self): 
        success_message = 'Jugo Eliminado Correctamente !' # Mostramos este Mensaje luego de Editar un Jugo
        messages.success (self.request, (success_message))       
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

Bueno, hasta aquí hemos creado las clases para las vistas genéricas que nos servirán para mostrar las vistas HTML del sistema CRUD.

Ten Paciencia, lo que quiero es que conozcas bien como se crea este proyecto y no llenarte el capitulo de mucho contenido porque te puedes marear y no tendrás un óptimo aprendizaje. 

Nota (s)

  • En la parte 4 de este tutorial, crearé las rutas, organizaremos nuestra carpeta templates en donde colocaremos las vistas de las páginas HTML, desplegaremos Bootstrap y otra utilidad necesaria para nuestro sistema CRUD.
  • Los pasos y comandos mencionados en este tutorial pueden cambiar en un futuro, esto no depende de nosotros si no de las empresas que dan soporte a Django y Python que suelen cambiar el orden y las opciones de sus tecnologías.
  • No olvides que debemos usar la Tecnología para hacer cosas Buenas por el Mundo. 

 

Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.