- ¿Qué es un sitio web estático?
- ¿Y qué pasa con los otros sitios web?
- ¿Qué es la persistencia?
- Formas de interactuar con bases de datos
- Repositorios:
Ya llevas buen rato aprendiendo Python y es hora de comenzar a ver cómo se comportan las aplicaciones del mundo real, especialmente cuando hablamos de sitios web. En esta lección vamos a hablar sobre un tema clave: cómo los sitios web guardan la información que usan.
¿Qué es un sitio web estático?
Primero hablemos de los sitios más simples: los sitios estáticos.
Características de los sitios estáticos:
- Muy rápidos y fáciles de hacer.
- No necesitan guardar datos de usuarios.
- La información se guarda directamente en archivos HTML.
Para crear este tipo de sitios se usan herramientas llamadas generadores de sitios estáticos, como Jekyll, que convierten tus archivos de texto en HTML listo para publicarse.
¿Y qué pasa con los otros sitios web?
La mayoría de los sitios web hoy no son estáticos, porque permiten interacción con el usuario.
¿Qué tipo de interacción? Cosas como:
📝 Registrarse
💭 Dejar comentarios
📷 Subir fotos
Todos esos datos generados por el usuario tienen que ser guardados en alguna parte.
Cuando uno comienza, piensa: “¡Guardo los datos en un archivo y ya!”. Pero eso funciona solo si tienes un usuario o dos. En el mundo real, donde pueden entrar miles de personas al mismo tiempo, guardar en archivos puede generar errores.
¿Por qué?
Aquí es donde entran las bases de datos.
¿Qué es la persistencia?
Para lograr esta persistencia se usan sistemas especializados llamados bases de datos.
Formas de interactuar con bases de datos
Una vez que tenemos una base de datos, necesitamos una forma de enviarle datos o preguntar cosas. Hay dos maneras principales:
Usar una biblioteca que se conecta directamente
Python, por ejemplo, ofrece la biblioteca sqlite3 que se conecta directamente a una base de datos SQLite:
Documentación SQLlite en Python
Usar un ORM
Una opción más moderna y flexible es usar un ORM (Object-Relational Mapper).
El ORM más común en Flask es SQLAlchemy. Este permite trabajar con datos como si fueran objetos de Python. Tú no piensas en “tablas” directamente, sino en cosas como usuarios o productos.
⏬ Veamos un ejemplo:
# Guardar un nuevo usuario con SQLAlchemy
user = User(
username=request.form['username'], # Se toma el dato del formulario
email=request.form['email'] # Se toma el email enviado por el usuario
)
# Se agrega a la base de datos
db.session.add(user)
db.session.commit() # Se guarda de forma permanente
Con esto, los datos se guardan de forma permanente en la base de datos.
❓ ¿Qué usaremos en este curso?
Aunque las bases de datos son fundamentales, aprender a usarlas bien toma tiempo. Como lo que queremos ahorita es enfocarnos en la lógica web, vamos a guardar los datos en lo que se llama una sesión.
Repositorios:
En el curso vamos a usar algo llamado repositorios, que son clases que nos ayudan a gestionar la información sin tener que pensar en los detalles de almacenamiento.
Por ejemplo, para guardar usuarios usaremos un UserRepository.
⏬ Veamos cómo funciona:
from flask import Flask
from data import UserRepository
import os
app = Flask(__name__)
# Se configura una clave secreta para manejar las sesiones
app.config['SECRET_KEY'] = os.getenv('SECRET_KEY')
# Creamos el repositorio
repo = UserRepository()
# Guardamos un nuevo usuario
repo.save(user)
# También podemos guardar otro
repo.save(user2)
# Y luego buscarlos:
usuario_encontrado = repo.find(user.id)
# O ver todos los usuarios guardados
todos = repo.content()
Cada tipo de dato tiene su propio repositorio:
| Entidad | Repositorio correspondiente |
|---|---|
| Usuario | UserRepository |
| Carro | CarRepository |
| Producto | ProductRepository |
Estos repositorios están hechos específicamente para este curso y no forman parte de Flask ni del ORM. Son herramientas diseñadas para ayudarte a entender cómo se organiza la lógica de una verdadera aplicación.
Resumen
- Los sitios estáticos no necesitan guardar datos, porque ya todo está en archivos HTML.
- Para sitios interactivos se requiere guardar información que los usuarios generan.
- Para guardar datos persistentes se usan bases de datos.
- Puedes usar bibliotecas directas o un ORM como SQLAlchemy para interactuar con bases de datos.
- En este curso, usaremos sesiones y repositorios para simular almacenamiento mientras aprendemos sobre desarrollo web.
- Los repositorios te dan acceso organizado a los datos de forma simple y coherente.
Nos vemos en la próxima lección donde trabajaremos más directamente con sesiones y repositorios.
Para acceder completo a curso necesitas un plan básico
El plan básico te dará acceso completo a todos los cursos, ejercicios y lecciones de Códica, proyectos y acceso de por vida a la teoría de las lecciones completadas. La suscripción se puede cancelar en cualquier momento.