Crear una aplicación de contactos 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 contacts dentro de la carpeta google

python manage.py startapp contacts

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

django version 5.1 webserver running
Django version 5.1 – Servidor web corriendo.

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 contacts con el editor de código Visual Studio Code, tecleando en terminal:

$ code .

Abre el archivo ubicado en la carpeta aplicación contacts/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: Contacts")

Agrega la vista al enrutador. Crea el siguiente archivo en la ubicación de la carpeta aplicación contacts/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("contacts/", include("contacts.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/contacts
Página web index para  aplicación tasks de Django

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 = [
  'contacts',
  ...
]

Edita el idioma de la aplicación admin.

Para usar en ingles:

LANGUAGE_CODE = 'en-us'

Para usar en español:

LANGUAGE_CODE = 'es-mx'

Edita la zona horaria

TIME_ZONE = 'America/Cancun'

Ejecuta la migración en la terminal

$ python manage.py migrate

Aproximadamente la salida en la terminal es la siguiente:

$ 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

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 como usuario admin, en correo electrónico presiona enter (para dejar en blanco) y en contraseña: 1234. Notificara que la contraseña es corta y segura, presionas tecla Y para confirmar.

Username: admin
Email address:
Password: ****
Password (again): ****
Superuser created successfully.

Ejecuta el servidor

$ python 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
Página web login para aplicación tasks de Django
Página web login para aplicación tasks de Django

Bienvenido a Django Administration. Observa que no se ve algún componente de la aplicación Contacts.

Backend de aplicación Admin de Django
Backend de aplicación Admin de Django

Crear un modelo con framework Django

Abre el archivo ubicado en la carpeta aplicación /contacts/models.py y agrega el siguiente código en lenguaje de programación Python.

from django.db import models

class Contact(models.Model):
  name     = models.CharField(max_length=30)
  lastname = models.CharField(max_length=50)

class Details(models.Model):
  list = models.ForeignKey(Contact, on_delete=models.CASCADE)
  phone_number = models.CharField(max_length=15)
  email = models.models.CharField(max_length=30)

Explicación.

Se usó el método ForeignKey() para crear una relación de uno a muchos entre tablas, Contact y Detail 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

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 ListColor
Tasks app#192a80
Interfaces with bootstrap 5#ffbf34 
Deploy app on Cloud Server #3ded97

Crea las siguientes tareas para la listas:

ListTitleDescriptionDateTime
Tasks appCreate a view.Edit view.py file for index and create a route in urls.py.2024-12-1108:00
Tasks appCreate a model.Edit models.py file to specify a fields list.2024-12-1209:00
Tasks appCreate a migration.Run the migration file to create tables on database.2024-12-1310:00
Interfaces with bootstrap 5Create a migration.Run the migration file to create tables on database.2024-12-1310:00
Interfaces with bootstrap 5Create a migration.Run the migration file to create tables on database.2024-12-1310:00
Interfaces with bootstrap 5Create a migration.Run the migration file to create tables on database.2024-12-1310:00
Deploy app on Cloud ServerCreate a migration.Run the migration file to create tables on database.2024-12-1310:00
Deploy app on Cloud ServerCreate a migration.Run the migration file to create tables on database.2024-12-1310:00
Deploy app on Cloud ServerCreate a migration.Run the migration file to create tables on database.2024-12-1310:00

El primer registro se ve asi:

Nueva tarea de Tasks app Django
Nueva tarea de Tasks app Django

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:

representacion del objeto para aplicacion tasks de django
Representacion del objeto para aplicación tasks de django

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *