En esta página:
Demo
En la parte anterior llamada Como Crear Un CRUD con Django 4 (Python 3.11) y Bootstrap 5 – Parte 1, iniciamos esta aventura en donde empezamos creando nuestro entorno virtual para poder aislar todos los archivos del proyecto, incluso los paquetes y configuraciones realizadas y las que haremos durante el proceso de creación de este proyecto. Asimismo instalamos Django Framework, creamos nuestra aplicación jugos y ejecutamos el proyecto para verificar si se creo correctamente. En esta segunda parte 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: “Donde buscar ayuda sobre Programación” y “ChatGPT ¿ Dejará sin empleo a los Desarrolladores ?” (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 2.
Base de Datos
Voy a usar MySQL como base de datos. Instalo el paquete mysqlclient que da soporte a Django Framework para usar MySQL. Ejecuto el siguiente comando:
1 2 3 4 5 6 7 8 9 10 |
pip install mysqlclient Collecting mysqlclient Downloading mysqlclient-2.1.1-cp311-cp311-win_amd64.whl (178 kB) ------------------------------------ 178.4/178.4 kB 899.5 kB/s eta 0:00:00 Installing collected packages: mysqlclient Successfully installed mysqlclient-2.1.1 (miev) |
Estoy usando XAMPP como servidor local, esta herramienta viene con MySQL y phpMyAdmin. Voy a crear la base de datos, la llamaré cruddjango4 y dentro de ella creare la tabla llamada jugos, esta tabla va tener los campos id, nombre, precio, stock, img, created_at y updated_at. Como sabemos el campo id debe ser Autoincrementable, este se genera automáticamente cuando haga la migración en Django para la tabla jugos.
Defino los campos que va tener la tabla jugos, abro el archivo llamado models.py que se encuentra en el directorio llamado también jugos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
/cruddjango4 ├── /cruddjango4 ├── /jugos ├── __pycache__ ├── __init__.py ├── admin.py ├── apps.py ├── models.py // Abro este Archivo ├── tests.py ├── views.py ├── db.sqlite3 ├── manage.py ├── /miev |
Tras abrir el archivo models.py le agrego los siguientes campos para la tabla jugos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
from django.db import models from django.utils import timezone # Creación de campos de la tabla 'jugos' class Jugos(models.Model): nombre = models.CharField(max_length=100) precio = models.CharField(max_length=20) stock = models.CharField(max_length=100) img = models.FileField() created_at = models.DateTimeField(auto_now_add=True) updated_at = models.DateTimeField(auto_now=True) class Meta: db_table = 'jugos' # Le doy de nombre 'jugos' a nuestra tabla en la Base de Datos |
En el código anterior, he definido los campos nombre, precio, stock, img, created_at y updated_at para la tabla jugos.
Antes de ejecutar las migraciones, debemos configurar la base de datos en el archivo de configuración de Django llamado settings.py, este archivo se encuentra en la carpeta cruddjango4 >cruddjango4 >cruddjango4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/cruddjango4 ├── /cruddjango4 ├── __pycache__ ├── __init__.py ├── asgi.py ├── settings.py // Abro este Archivo ├── urls.py ├── wsgi.py ├── /jugos ├── db.sqlite3 ├── manage.py ├── /miev |
Dentro del archivo settings.py agrego soporte y conexión a la base de datos MySQL, ya que usaré la base de datos MySQL, le colocaré el termino ‘default’ para indicarle a Django que MySQL será el motor que usaré como base de datos y debajo coloco el nombre de mi base de datos, usuario, password y como opción le digo a Django que usaré el modo SQL tradicional.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
DATABASES = { 'sqlite': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), }, 'default': { # le coloco default para poder usar MySQL 'ENGINE': 'django.db.backends.mysql', 'NAME': 'cruddjango4', 'USER': 'root', 'PASSWORD': '', 'HOST': 'localhost', 'PORT': '3306', 'OPTIONS': { 'sql_mode': 'traditional', } } } |
Ahora voy a crear la migración de la tabla jugos, en mi consola de comandos y ejecuto el siguiente comando:
1 2 3 4 5 6 7 8 |
python manage.py makemigrations jugos Migrations for 'jugos': jugos\migrations\0001_initial.py - Create model Jugos (miev) |
Bien ahora procederé a crear la tabla jugos en la base de datos, ejecuto el siguiente comando en mi consola de comandos.
1 2 3 4 5 6 7 8 9 |
python manage.py migrate jugos Operations to perform: Apply all migrations: jugos Running migrations: Applying jugos.0001_initial... OK (miev) |
Si me dirijo a phpMyAdmin puedo ver que se me ha creado la tabla jugos con los campos que le especifique:
Bueno hasta aquí llegamos con esta segunda parte del tutorial en donde configuramos la base de datos MySQL, asimismo creamos las migraciones y la tabla jugos 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)
- En la parte 3 vamos a crear las vistas genéricas para el 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.