Como Crear Un CRUD con Django 5 – Parte 3
En esta página:
Demo
Anteriormente, creamos nuestro modelo para la tabla jugos y creamos su migración con los campos correspondientes.
La tabla jugos tiene los campos nombre, precio, stock, img, created_at y updated_at, es importante recordar que el campo id, la misma base de datos lo genera automáticamente, cada vez que un registro es insertado en la tabla jugos.
En esta tercera parte continuaremos con la creación de la aplicación jugos para hacer en ella nuestras tareas CRUD, vamos con ello.
Partes
Para poder cargar las vistas HTML en el navegador, necesitamos crear vistas genéricas nativas de Django, veamos como hacerlo.
Creación de Vistas Genéricas
El framework Django funciona sobre la arquitectura MTV (Model Template View) que traducido al español significa Modelo Plantilla Vista.
Al crear este proyecto, Django nos generó un archivo llamado views.py en donde podemos definir las vistas y otras tares para nuestro proyecto.
Django nos brinda 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 tareas del sistema CRUD serán Create, Read, Update y Delete, entonces haremos uso de las siguientes vistas genéricas:
- ListView (Para listar todos los registros de la tabla jugos en la vista principal)
- DetailView (Para leer un registro)
- CreateView (Para crear un registro)
- UpdateView (Para actualizar un registro)
- DeleteView (Para eliminar un registro)
Para definir las vistas genéricas, abro el archivo llamado views.py que se encuentra en crud-django5 > cruddjango5 > jugos > views.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
/crud-django5 ├── /cruddjango5 ├── /cruddjango5 ├── /jugos ├── /migrations ├── __init__.py ├── admin.py ├── apps.py ├── models.py // Abro este archivo ├── test.py ├── views.py // Abro este archivo ├── db-sqlite3 ├── manage.py ├── /mientornovirtual |
Dentro de archivo views.py instanciamos las vistas genéricas de Django y también el modelo Jugos el cual configuramos dentro del archivo models.py en la segunda parte 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 |
Paso seguido, instancio 3 utilidades necesarias para este proyecto: reverse, messages y forms.
En el código he colocado comentarios para explicar que hace cada una de estas utilidades:
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 |
Ahora vamos a crear 5 clases para poder usar las vistas genéricas de Django, estas son: ListView, DetailView, CreateView, UpdateView y DeleteView.
Las escribiremos una por una para mantener un orden a continuación.
Listar Registros
Esta vista nos servirá para mostrar en una tabla HTML en la página principal, todos los registros almacenados en la tabla jugos.
Voy a crear una clase con el nombre ListarJugos la cual usará la vista genérica ListView:
1 2 3 4 |
class ListarJugos(ListView): model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' |
La vista genérica anterior solo nos permite listar los registros en la página principal.
También tenemos que crear las vistas para las tareas CRUD (CRUD son Create, Read, Update y Delete).
Crear (Create)
Para esta vista genérica creo una clase con el nombre CrearJugo, esta clase 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:
Leer (Read)
Para esta vista genérica creo una clase con el nombre DetalleJugo 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 DetalleJugo(DetailView): model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' |
Actualizar (Update)
Para esta vista genérica creo una clase con el nombre ActualizarJugo 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 ActualizarJugo(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)
Para esta última vista genérica, crearé una clase con el nombre EliminarJugo que hará uso de la vista genérica DeleteView, esta vista la usaremos para eliminar un registro o jugo de nuestra base de datos, específicamente de la tabla jugos:
1 2 3 4 5 6 7 8 9 10 11 12 |
class EliminarJugo(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' |
Acá te dejo 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 |
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 ListarJugos(ListView): model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' class CrearJugo(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 DetalleJugo(DetailView): model = Jugos # Llamamos a la clase 'Jugos' que se encuentra en nuestro archivo 'models.py' class ActualizarJugo(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 EliminarJugo(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' |
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 siguiente parte 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.
- Django Tutoriales
- 06-01-2024
- 11-01-2024
- Crear un Post - Eventos Devs - Foro
Social
Redes Sociales (Developers)
Redes Sociales (Digital)