En esta página:
Demo
En la parte anterior llamada Como crear un CRUD con Django 3.1 (Python 3.9) y Bootstrap 4.6 – Parte 3, configuramos las vistas genéricas para nuestro proyecto, estas vistas genéricas nos permitirán realizar varias tareas CRUD que estan conectadas a nuestro modelo Postres que configuramos en la Parte 2 de este tutorial, en esta nueva parte vamos a configurar las rutas y otros elementos importantes para que el sistema CRUD funcione sin problemas, 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
- 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: “No Encuentro Empleo Por Mi Edad ¿ Que Puedo Hacer ?”:
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 4.
Rutas
Voy a crear 5 rutas indispesables para mi sistema CRUD funcione sin problemas. Abro el archivo urls.py que se encuentra en cruddjango31 > cruddjango31 > urls.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/cruddjango31 ├── /cruddjango31 ├── __init__.py ├── asgi.py ├── settings.py ├── urls.py // Abro este archivo ├── wsgi.py ├── /mientornovirtual ├── /postres ├── db.sqlite3 ├── manage.py ├── mysqlclient-1.4.6-cp39-cp39-win_amd64.whl |
Dentro del archivo urls.py agrego las siguientes rutas dentro de urlpatterns = [], mediante estas rutas llamamos a una determinada vista HTML, estas vistas HTML las crearé más adelante.
La ruta admin/ la creo el Framework Django automáticamente cuando se creo el proyecto, asi que no hay que tocarla.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
urlpatterns = [ path('admin/', admin.site.urls), # La ruta 'leer' en donde listamos todos los registros o postres de la Base de Datos path('postres/', PostresListado.as_view(template_name = "postres/index.html"), name='leer'), # La ruta 'detalles' en donde mostraremos una página con los detalles de un postre o registro path('postres/detalle/<int:pk>', PostreDetalle.as_view(template_name = "postres/detalles.html"), name='detalles'), # La ruta 'crear' en donde mostraremos un formulario para crear un nuevo postre o registro path('postres/crear', PostreCrear.as_view(template_name = "postres/crear.html"), name='crear'), # La ruta 'actualizar' en donde mostraremos un formulario para actualizar un postre o registro de la Base de Datos path('postres/editar/<int:pk>', PostreActualizar.as_view(template_name = "postres/actualizar.html"), name='actualizar'), # La ruta 'eliminar' que usaremos para eliminar un postre o registro de la Base de Datos path('postres/eliminar/<int:pk>', PostreEliminar.as_view(), name='eliminar'), ] |
Mediante las rutas que definí en el código anterior, estoy llamando a las vistas genéricas (clases) que definimos en la Parte 3 de este tutorial, por ejemplo en la ruta postres/crear llamamos a la clase PostreCrear la cual debe llamar al template o vista crear.html que se encuentra dentro de la carpeta postres y al final le asignamos un nombre a esta ruta, el nombre que le asignamos es crear.
Se puede apreciar que las rutas detalle, actualizar y eliminar usan el id del postre o registro que es un dato de tipo int
1 2 3 4 5 6 7 8 9 |
path('postres/detalle/<int:pk>', PostreDetalle.as_view(template_name = "postres/detalles.html"), name='detalles'), path('postres/crear', PostreCrear.as_view(template_name = "postres/crear.html"), name='crear'), path('postres/editar/<int:pk>', PostreActualizar.as_view(template_name = "postres/actualizar.html"), name='actualizar'), path('postres/eliminar/<int:pk>', PostreEliminar.as_view(), name='eliminar'), |
Siempre debemos pasarle a estas 3 rutas el id del registro o postre con <int:pk> en donde int es integer y pk es primary key, ya que de esta manera Django puede saber cual es el registro que debe de leer, actualizar y eliminar de la Base de Datos.
A continuación el código completo del archivo urls.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 |
"""cruddjango31 URL Configuration The `urlpatterns` list routes URLs to views. For more information please see: https://docs.djangoproject.com/en/3.1/topics/http/urls/ Examples: Function views 1. Add an import: from my_app import views 2. Add a URL to urlpatterns: path('', views.home, name='home') Class-based views 1. Add an import: from other_app.views import Home 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') Including another URLconf 1. Import the include() function: from django.urls import include, path 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ from django.contrib import admin from django.urls import path from postres.views import PostresListado, PostreDetalle, PostreCrear, PostreActualizar, PostreEliminar urlpatterns = [ path('admin/', admin.site.urls), # La ruta 'leer' en donde listamos todos los registros o postres de la Base de Datos path('postres/', PostresListado.as_view(template_name = "postres/index.html"), name='leer'), # La ruta 'detalles' en donde mostraremos una página con los detalles de un postre o registro path('postres/detalle/<int:pk>', PostreDetalle.as_view(template_name = "postres/detalles.html"), name='detalles'), # La ruta 'crear' en donde mostraremos un formulario para crear un nuevo postre o registro path('postres/crear', PostreCrear.as_view(template_name = "postres/crear.html"), name='crear'), # La ruta 'actualizar' en donde mostraremos un formulario para actualizar un postre o registro de la Base de Datos path('postres/editar/<int:pk>', PostreActualizar.as_view(template_name = "postres/actualizar.html"), name='actualizar'), # La ruta 'eliminar' que usaremos para eliminar un postre o registro de la Base de Datos path('postres/eliminar/<int:pk>', PostreEliminar.as_view(), name='eliminar'), ] |
Ahora pasemos a organizar los templates para el sistema CRUD.
Templates
Dentro el archivo urls.py que configuré anteriormente, podemos ver que cada ruta está llamando a un archivo HTML con la vista correspondiente que debe de mostrar dicha ruta, tenemos que crear un directorio llamado templates en donde crearemos 4 archivos HTML que son actualizar.html, crear.html, detalles.html y index.html
El directorio templates no viene con Django Framework o se crea automáticamente, este directorio lo debo de crear manualmente dentro del directorio de nuestra aplicación postres y dentro del directorio templates debo crear otro directorio llamado postres, es decir la ruta quedaria como cruddjango31 > postres > templates > postres
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
/cruddjango31 ├── /cruddjango31 ├── /mientornovirtual ├── /postres ├── /__pycache__ ├── /migrations ├── /static ├── /templates ├── /postres ├── actualizar.html // Creamos este archivo ├── crear.html // Creamos este archivo ├── detalles.html // Creamos este archivo ├── index.html // Creamos este archivo ├── __init__.py ├── admin.py ├── apps.py ├── models.py ├── tests.py ├── views.py ├── db.sqlite3 ├── manage.py ├── mysqlclient-1.4.6-cp39-cp39-win_amd64.whl |
Ahora pasaré a instalar algunas dependencias necesarias para este proyecto.
Instalación y Configuración de Paquetes
Instalaré y configuraré un par de paquetes para mi proyecto:
Bootstrap 4
El Framework Bootstrap 4 nos permite crear interfaces HTML de manera rápida, asi nos enfocamos solamente en la lógica de la aplicación. Voy a instalar la librería django-bootstrap4 ejecutando el siguiente comando, esta librería nos instala Bootstrap 4 dentro del Framework Django:
1 2 3 4 |
# Comando para instalar el paquete 'django-bootstrap4' pip install django-bootstrap4 |
Para más información puedes visitar el enlace del paquete.
Django Widget Tweaks
Ahora instalaré el paquete django-widget-tweaks que me permite renderizar y gestionar los campos de los formularios de manera ágil, ejecuto el siguiente comando para instalarlo:
1 2 3 4 |
# Comando para instalar el paquete 'django-widget-tweaks' pip install django-widget-tweaks |
Igualmente, para más información puedes visitar el enlace del paquete.
Para que los paquetes instalados anteriormente funcionen en mi proyecto, debo de instanciarlos dentro del archivo settings.py que se encuentra en cruddjango31 > cruddjango31 > settings.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/cruddjango31 ├── /cruddjango31 ├── __init__.py ├── asgi.py ├── settings.py // Abro este archivo ├── urls.py ├── wsgi.py ├── /mientornovirtual ├── /postres ├── db.sqlite3 ├── manage.py ├── mysqlclient-1.4.6-cp39-cp39-win_amd64.whl |
Abro el archivo settings.py y dentro de el instancio el paquete django-bootstrap4 y django-widget-tweaks en la sección INSTALLED_APPS = []:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'postres', 'bootstrap4', # Registramos Bootstrap 4 (Este comentario es para explicación, debes de eliminarlo para probar la aplicación, si no te va a dar error) 'widget_tweaks', #Registramos widget_tweaks (Este comentario es para explicación, debes de eliminarlo para probar la aplicación, si no te va a dar error) ] |
Hasta aquí hemos creado las rutas, configurado el directorio templates para los archivos HTML e instalado los paquetes que necesitaré para el 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)
- Para la siguiente parte de este tutorial, crearé las vistas HTML, añadiremos mensajes despues de haber creado, actualizado y eliminado un postre o registro de la Base de Datos y realizaremos unas configuraciones adicionales para nuestra aplicación 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 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.