En esta página:
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:
-
- Que es Django, Historia y tu primer Hola Mundo (Corregido: 31-05-2019)
- Conceptos Iniciales para desplegar Django
- Como usar Django y React JS (Método Manual, no Librería)
- Como crear un CRUD con Django 2 y Bootstrap 4 – Parte 1 (Python 3.7)
- 5 Servicios de Hosting VPS ideales para publicar un Proyecto Creado con Django
- Como Integrar Firebase en Django 3.0.7 – Parte 1
- Como Crear un Enlace de Descarga en Django
- 7 Proyectos que han sido Creados con Django Framework
- Como Crear una API REST con Django 3.1.1 + Consumir Datos en una Aplicación Android – Parte 1
- Puedes leer más en la categoría Django
Asimismo, te invito a escuchar el Podcast: “Que Hacer Cuando Estamos En Casa” y “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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
/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:
1 2 3 4 5 6 7 8 9 10 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 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:
1 2 3 4 |
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:
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 2 3 4 |
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:
1 2 3 4 5 6 7 8 9 10 11 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
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.