Crear una aplicación de tareas con framework Django 5
Esta aplicación se desarrolla siguiendo la documentación oficial de Django Project.
Paso 1. Crea un proyecto django desde la terminal
$ django-admin startproject google
Accesa a la carpeta del proyecto recién creado: google
$ cd google
Crea la aplicacion tasks dentro de la carpeta google
python3 manage.py startapp tasks
Sal de la carpeta google, tecleando en terminal:
$ cd ..
Muestra las carpetas y archivos creados, tecleando en terminal
$ ls -l
Para ver las carpetas y archivos como estructura de árbol, teclear en terminal:
$ tree google
El resultado es:
google/
├── google
│ ├── asgi.py
│ ├── init.py
│ ├── pycache
│ │ ├── init.cpython-312.pyc
│ │ └── settings.cpython-312.pyc
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
└── tasks
├── admin.py
├── apps.py
├── init.py
├── migrations
│ └── init.py
├── models.py
├── tests.py
└── views.py
Entra nuevamente a la carpeta del proyecto
cd google
Correr el servidor web Django
python3 manage.py runserver
Abre el navegador web de tu elección (Chrome, Firefox, Safari, Opera, Microsoft Edge) y teclea en la barra de direccion:
localhost:8000
O puedes teclear también en la barra de dirección una IP local con puerto 8000:
127.0.0.1:8000
En cualquier caso. El resultado es la siguiente pantalla: Django Framework version 5.1
Detén el servidor web Django, presionado las teclas en terminal:
Control + C
Crear una vista con framework Django
Abre la carpeta del proyecto google tasks con el editor de código Visual Studio Code, tecleando en terminal:
$ code .
Abre el archivo ubicado en la carpeta aplicación tasks/views.py y coloca el siguiente código en lenguaje de programación Python.
from django.http import HttpResponse
def index(request):
return HttpResponse("Pagina Web: Tasks Index")
Agrega la vista al enrutador. Crea el siguiente archivo en la ubicación de la carpeta aplicación tasks/urls.py y coloca el siguiente código en lenguaje de programación Python.
from django.urls import path
from . import views
urlpatterns = [
path("", views.index, name="index"),
]
Agrega la ruta de la aplicación al proyecto . Abre el archivo ubicado en la carpeta proyecto google/urls.py y coloca el siguiente código en lenguaje de programación Python.
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path("tasks/", include("tasks.urls")),
path("admin/", admin.site.urls),
]
Corre el servidor web Django
$ python3 manage.py runserver
Abre el navegador web de tu elección (Chrome, Firefox, Safari, Opera, Microsoft Edge) y teclea en la barra de dirección:
localhost:8000/tasks
Detén el servidor web Django, presionado las teclas en terminal:
Control + C
Configurar base de datos (Tutorial 02)
Abre el archivo ubicado en la carpeta aplicación google/settings.py
Cambia el nombre de la base de datos
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'google.sqlite3',
}
}
Agrega la aplicación tasks.
INSTALLED_APPS = [
'tasks.apps.TasksConfig',
...
]
Edita el idioma de la aplicación admin
LANGUAGE_CODE = 'en-us'
Edita la zona horaria
TIME_ZONE = 'America/Cancun'
Ejecuta la migración en la terminal
$ python manage.py migrate
La salida en la terminal
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
Corre el servidor web Django
$ python3 manage.py runserver
Abre el navegador web de tu elección (Chrome, Firefox, Safari, Opera, Microsoft Edge) y teclea en la barra de dirección:
localhost:8000/admin
Aunque puedas ver el inicio de sesión, aún no se ha creado una cuenta administrador, más adelante podrás accesar.
Crear un modelo con framework Django
Abre el archivo ubicado en la carpeta aplicación /tasks/models.py y agrega el siguiente código en lenguaje de programación Python.
from django.db import models
class List(models.Model):
list_name_text = models.CharField(max_length=50)
color_text = models.CharField(max_length=10)
class Task(models.Model):
list = models.ForeignKey(List, on_delete=models.CASCADE)
title = models.CharField(max_length=30)
description = models.TextField()
date = models.DateField()
time = models.TimeField()
Explicación.
Se usó método ForeignKey() para crear relación de uno a muchos entre tablas, List y Task de la base de datos.
Activando el modelo
Una vez hecho los cambios en el modelo.
Crea una migración llamada tasks en la terminal:
python manage.py makemigrations tasks
Se creó un archivo de migración. La salida en la terminal:
$ python manage.py makemigrations tasks
Migrations for 'tasks':
tasks\migrations\0001_initial.py
+ Create model List
+ Create model Task
Ejecuta los siguientes comandos en la terminal para generar código SQL basado en las especificaciones del archivo de migración 0001_initial.py.
$ python manage.py sqlmigrate tasks 0001
Se creó un archivo con código SQL. La salida en la terminal:
BEGIN;
--
-- Create model List
--
CREATE TABLE "tasks_list" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "list_name_text" varchar(50) NOT NULL, "color_text" varchar(10) NOT NULL);
--
-- Create model Task
--
CREATE TABLE "tasks_task" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "title" varchar(30) NOT NULL, "description" text NOT NULL, "date" date NOT NULL, "time" time NOT NULL, "list_id" bigint NOT NULL REFERENCES "tasks_list" ("id") DEFERRABLE INITIALLY DEFERRED); CREATE INDEX "tasks_task_list_id_c7514fc6" ON "tasks_task" ("list_id");
COMMIT;
Ejecuta la nueva migracion para que creen las tablas en la base de datos
$ python manage.py migrate
La salida en la terminal:
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions, tasks Running migrations:
Applying tasks.0001_initial... OK
Introducción a la aplicación Django Admin
La aplicación Admin de Django es un sistema de autenticación, esto quiere decir que el acceso a la aplicación es por medio de inicio de sesión y requiere de usuario y contraseña.
Crea un usuario administrador, escribiendo en la terminal los siguientes comandos:
$ python manage.py createsuperuser
Escribe un nombre de usuario, correo electrónico y contraseña:
Username: admin
Email address: admin@gmail.com
Password: ****
Password (again): ****
Superuser created successfully.
Ejecuta el servidor
$ python3 manage.py runserver
Abre el navegador en la direccion: localhost:8000/admin
Observa que no se ve algún componente de la aplicación Tasks.
Abre el archivo tasks/admin.py y agrega el siguiente código
from django.contrib import admin
from .models import List, Task
admin.site.register(List)
admin.site.register(Task)
Actualiza la página web en el navegador para poder ver los componentes recién creados:
Crea registros para lista y para tareas desde la aplicación admin de Django.
Title of List | Color |
Tasks app | #192a80 |
Interfaces with bootstrap 5 | #ffbf34 |
Deploy app on Cloud Server | #3ded97 |
Crea las siguientes tareas para la listas:
List | Title | Description | Date | Time |
Tasks app | Create a view. | Edit view.py file for index and create a route in urls.py. | 2024-12-11 | 08:00 |
Tasks app | Create a model. | Edit models.py file to specify a fields list. | 2024-12-12 | 09:00 |
Tasks app | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Interfaces with bootstrap 5 | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Interfaces with bootstrap 5 | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Interfaces with bootstrap 5 | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Deploy app on Cloud Server | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Deploy app on Cloud Server | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
Deploy app on Cloud Server | Create a migration. | Run the migration file to create tables on database. | 2024-12-13 | 10:00 |
El primer registro se ve asi:
Una vez capturado el primer registro podrá ver que el registro dice: List object (1). Lo cual no es una representación útil del objeto.
Abra el archivo tasks/models.py.
Agrega el codigo resaltado en negrita (método __srt__) a ambos modelos: List y Task.
from django.db import models
class List(models.Model):
list_name_text = models.CharField(max_length=50)
color_text = models.CharField(max_length=10)
def __str__(self):
return self.list_name_text
class Task(models.Model):
list = models.ForeignKey(List, on_delete=models.CASCADE)
title = models.CharField(max_length=30)
description = models.TextField()
date = models.DateField()
time = models.TimeField()
def __str__(self):
return self.title
El resultado en pantalla es: