Nube Colectiva – Productos y Servicios Digitales

Como crear un CRUD con Django 3.1 (Python 3.9) y Bootstrap 4.6 – Parte 3

Demo

En la parte anterior llamada Como crear un CRUD con Django 3.1 (Python 3.9) y Bootstrap 4.6 – Parte 2, configuramos el soporte de MySQL para Django, asimismo creamos el modelo con los campos para nuestra tabla llamada postres la cual usaremos para nuestro sistema CRUD, en este Post vamos a crear las vistas genericas que son necesarias para cargar las interfaces de la aplicación, vamos con ello.

Partes

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

Asimismo, te invito a escuchar el Podcast: “En Cuanto Tiempo Puedo Ser Un Buen Programador ?”:

Spotify: Sound Cloud: Apple Podcasts

Bien ahora continuemos con el Post: Como crear un CRUD con Django 3.1 (Python 3.9) y Bootstrap 4.6 – Parte 3. 

Vistas Genéricas

El Framework Django trabaja sobre la arquitectura MTV que son las iniciales de 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.

Las iniciales de CRUD son Create, Read, Update y Delete, por ende usaré las siguientes vistas genéricas:

Abro el archivo llamado views.py que se encuentra en cruddjango31 > postres > views.py

/cruddjango31 
├── /cruddjango31 
├── /mientornovirtual 
├── /postres 
    ├── /__pycache__
    ├── /migrations
    ├── /static
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── models.py
    ├── tests.py
    ├── views.py // Abro este archivo 
├── db.sqlite3
├── manage.py 
├── mysqlclient-1.4.6-cp39-cp39-win_amd64.whl

Dentro del archivo views.py voy a instanciar las vistas genéricas de Django y mi modelo Postres 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 'Postres' para poder usarlo en nuestras Vistas CRUD
from .models import Postres

Paso seguido 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

Ahora crearé unas clases para poder usar las vistas genéricas de Django: ListViewDetailViewCreateViewUpdateView y DeleteView

Listado de Registros o Postres

Esta vista es para 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 PostresListado la cual usará la vista genérica ListView:

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

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

Crear (Create)

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

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

Leer (Read)

Creo una clase con el nombre PostreDetalle que usará la vista genérica DetailView la cual se encargará de mostrar los detalles de un postre o registro:

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

Actualizar (Update)

Creo una clase con el nombre PostreActualizar que usará la vista genérica UpdateView, en esta vista mostraremos un formulario para actualizar un postre 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 PostreActualizar(SuccessMessageMixin, UpdateView): 
    model = Postres # Llamamos a la clase 'Postres' que se encuentra en nuestro archivo 'models.py' 
    form = Postres # Definimos nuestro formulario con el nombre de la clase o modelo 'Postres' 
    fields = "__all__" # Le decimos a Django que muestre todos los campos de la tabla 'postres' de nuestra Base de Datos 
    success_message = 'Postre Actualizado Correctamente !' # Mostramos este Mensaje luego de Editar un Postre 
 
    # Redireccionamos a la página principal luego de actualizar un registro o postre
    def get_success_url(self):               
        return reverse('leer') # Redireccionamos a la vista principal 'leer'

Eliminar (Delete)

Y por último creo una clase con el nombre PostreEliminar que hara uso de la vista genérica DeleteView, esta vista la usaremos para eliminar un registro o postre de nuestra base de datos, especificamente de la tabla postres:

class PostreEliminar(SuccessMessageMixin, DeleteView): 
    model = Postres 
    form = Postres
    fields = "__all__"     

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

Mencionar que el mensaje ‘Postre Eliminado Correctamente !’ de la Vista Genérica DeleteView de Django hasta la fecha de este tutorial no tiene soporte de mensajes mediante SuccessMessageMixin, entonces debo crear manualmente el mensaje de respuesta que se muestra al eliminar un postre o registro con messages.success (self.request, (success_message))

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

from django.shortcuts import render

from django.views.generic import ListView, DetailView 
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from .models import Postres

from django.urls import reverse

from django.contrib import messages 
from django.contrib.messages.views import SuccessMessageMixin 

from django import forms

class PostresListado(ListView): 
    model = Postres

class PostreDetalle(DetailView): 
    model = Postres

class PostreCrear(SuccessMessageMixin, CreateView): 
    model = Postres
    form = Postres
    fields = "__all__" 
    success_message = 'Postre Creado Correctamente !' # Mostramos este Mensaje luego de Crear un Postre     

    # Redireccionamos a la página principal luego de crear un registro o postre
    def get_success_url(self):        
        return reverse('leer') # Redireccionamos a la vista principal 'leer' 

class PostreActualizar(SuccessMessageMixin, UpdateView): 
    model = Postres
    form = Postres
    fields = "__all__"  
    success_message = 'Postre Actualizado Correctamente !' # Mostramos este Mensaje luego de Editar un Postre 

    # Redireccionamos a la página principal luego de actualizar un registro o postre
    def get_success_url(self):               
        return reverse('leer') # Redireccionamos a la vista principal 'leer' 

class PostreEliminar(SuccessMessageMixin, DeleteView): 
    model = Postres 
    form = Postres
    fields = "__all__"     

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

Bien, 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)

 

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

Exit mobile version