Skip to content
Juan David Argüello Plata edited this page Sep 13, 2021 · 10 revisions

Módulos de TúFlix+

En el presente wiki encontrarás información de resumen de la forma en cómo funcionan los módulos de este proyecto. Recuerda que el directorio del proyecto, en donde se localizan los diferentes módulos, los puedes apreciar a continuación:

TuFlixPlusOSE
│   README.md
│   LICENSE    
│
└───TuFlix
│   |    manage.py
|   └─── TuFlix
|   |       |    __init__.py
|   |       |    asgi.py
|   |       |    settings.py
|   |       |    urls.py
|   |       |    wsgi.py
|   └─── Usuarios
|   |       |    __init__.py
|   |       |    admin.py
|   |       |    apps.py
|   |       |    models.py
|   |       |    permissions.py
|   |       |    serializers.py
|   |       |    tests.py
|   |       |    urls.py
|   |       |    views.py

Cada módulo contiene, como mínimo, una serie de archivos Python por defecto, entre ellos se destacan: models.py, views.py, urls.py, admin.py, apps.py y tests.py. En la presente sección, se brindará una descripción general sobre cada archivo.

1. models.py

Se trata del CRUD del proyecto Django. Desarrolla la comunicación con la base de datos mediante la librería base django.db, a través de la clase models. Sopota los principales sistemas de gestión de bases de datos relacionales, entre ellos: PostgreSQL, MySQL, MariaDB y SQLite. La información detallada de cómo funciona la podrás encontrar en este enlace.

Para entender la forma en cómo funciona, se realizará la explicación con base en un ejemplo musical:

from django.db import models

class Musico(models.Model):
    nombre = models.CharField(max_length=100, null = True, blank = True)
    apellido = models.CharField(max_length=100, null = True, blank = True)
    nombreArtistico = models.CharField(max_length=100)
    numOyentes = models.IntegerField(default=0)

    def __str__(self):
        #Permite identificar el objeto 'Musico' mediante el nombre artistico
        return self.nombreArtistico

La clase Musico permite crear objetos que contengan la información básica de artistas mediante diversos atributos: nombre, apellido y nombre artístico y número de oyentes mensuales. Conceptos generales de la clase:

  • models.Model es la clase padre que permite crear tablas SQL de manera automática a través de los comandos python manage.py makemigrations y python manage.py migrate.

  • models.CharField() método que permite almacenar valores de texto.

  • max_length valor que representa la longitud máxima del texto a almacenar en número de caracteres.

  • models.IntegerField() método que permite almacenar números enteros.

  • default permite estipular un valor por defecto en caso de que no se brinde un valor particular en el momento de crear un objeto.

  • null define si permite almacenar valores nulos.

  • blank especifica si se permiten valores vacíos.

  • __str__ se trata de un método personalizado que permite identificar objetos a través de una palabra clave.

class Album(models.Model):
    generos = (
        ('Rock', 'R'),
        ('Reggaeton', 'Rg'),
        ('Jazz', 'Jz'),
        ('Salsa', 'S')
    )
    musico = models.ForeignKey(Musico, on_delete=models.CASCADE)
    nombre = models.CharField(max_length=100)
    genero = models.CharField(choices = generos)
    caratula = models.ImageField(blank=True, null=True)
    
    def __str__(self):
        return self.nombre + " - " + self.musico.nombreArtistico
  • models.ForeignKey() estipula un enlace entre tablas SQL. Para este caso, entre un músico y su álbum. Gracias a esta conexión, es posible acceder a la información del objeto Musico desde un objeto tipo Album, como se muestra en el método __str__.

  • choices permite definir una serie de opciones.

  • models.ImageField() permite almacenar imágenes en base de datos.

2. admin.py

Sección en donde se define el contenido de la zon de administración en el servidor local (python manage.py runserver) mediante los modelos de la sección models.py. Siguiendo el ejemplo anterior:

from django.contrib import admin
from .models import *

admin.site.register(Musico)
admin.site.register(Album)

3. urls.py - aplicación

Se trata de las direcciones web locales de la aplicación.

4. urls.py - proyecto

5. views.py

Contiene la lógica