En esta página:
Demo
En este Post continuaremos con la Segunda Parte del tutorial Como crear un CRUD con Django 2 y Bootstrap 4 – Parte 1 (Python 3.7) en donde crearemos los controladores, modelos y demás entornos para poder gestionar nuestro CRUD sin problemas, vamos con esta 2da parte del tutorial.
Capítulos
Hay que recordar que Django trabaja sobre la arquitectura MTV (Model Template View) que en español significa Modelo Plantilla Vista).
Vistas Genéricas
Django cuenta con el archivo views.py en donde definimos varios procesos de nuestro CRUD, dentro de este vamos a usar vistas genericas de Django que nos facilitan el desarrollo ágil de nuestra aplicación, asi evitamos escribir demasiado código
Para usar las vistas genéricas necesarias para nuestro CRUD que son ListView, DetailView, CreateView, UpdateView y DeleteView, estas vistas génericas las usaremos para listar los postres, ver el detalle, crear, actualizar y eliminar un postre, para usarlas debemos de instanciarlas mediante estas 2 líneas en la parte superior de nuestro archivo views.py además instanciamos el modelo Postres para usarlos en nuestras Vistas CRUD
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 'Postres' para poder usarlo en nuestras Vistas CRUD from .models import Postres |
Ahora instanciamos 3 herramientas necesarias para trabajar con nuestro CRUD los cuales son reverse, messages y forms en el código te explico para que sirve cada una, igualmente las colocamos en la parte superior de nuestro archivo views.py
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 nuestras clases para poder usar las vistas genéricas ListView, DetailView, CreateView, UpdateView y DeleteView de Django.
Listar registros o postres
Empezamos con la clase PostresListado que usará la vista genérica ListView, en esta vista listaremos todos los postres en una tabla HTML
1 2 3 4 |
class PostresListado(ListView): model = Postres # Llamamos a la clase 'Postres' que se encuentra en nuestro archivo 'models.py' |
Crear (Create)
Paso seguido creamos la clase 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
1 2 3 4 5 6 7 8 9 10 11 |
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)
Ahora vamos a crear la clase PostreDetalle que usará la vista genérica DetailView la cual se encargará de mostrar los detalles de un postre o registro
1 2 3 4 |
class PostreDetalle(DetailView): model = Postres # Llamamos a la clase 'Postres' que se encuentra en nuestro archivo 'models.py' |
Actualizar (Update)
Creamos la clase 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
1 2 3 4 5 6 7 8 9 10 11 |
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)
Por último crearemos la clase 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
1 2 3 4 5 6 7 8 9 10 11 12 |
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' |
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, es decir hay que crear manualmente el mensaje de respuesta que se muestra al eliminar un postre o registro con messages.success (self.request, (success_message))
Veamos todo el código completo de nuestro 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 |
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' |
Hasta aquí ya tenemos integrados los procesos de las vistas con el modelo Postres para nuestro CRUD.
Notas
- En la parte número 3 de este tutorial crearemos 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 mencionados en este tutorial pueden cambiar en un futuro, esto no depende de nosotros si no de las empresas que dan soporte a Django, Python y MySQL que suelen cambiar el orden y las opciones de sus tecnologías.
Síguenos en nuestras Redes Sociales para que no te pierdas nuestros próximos contenidos.