Introducción
- Este artículo te guía a través de la validación de datos con pydantic, una biblioteca de Python cuyo núcleo de validación (
pydantic-core) está escrito en Rust. Los ejemplos usan pydantic v2. - Antes de empezar, asegúrate de tener Python y la biblioteca pydantic instalados en tu entorno. Consulta el comando de instalación de pydantic a continuación.
Creando un modelo
- Primero, necesitaremos importar y hacer que nuestra clase herede de
pydantic.BaseModelpara empezar a validar. En nuestro ejemplo crearemos una clase llamadaPersonque tendrá un nombre, una edad y un correo electrónico.
- Con esta clase, cuando la instanciemos, pydantic validará que
nameyemailsean cadenas de texto y queagesea un entero.
Usando el modelo
- Ahora que la tenemos creada, instanciaremos la clase. Crearemos un dict que contenga los datos y lo desempaquetaremos en nuestra clase.
- El ejemplo anterior no generará ningún error ya que todos los campos son del tipo correcto. Por defecto, pydantic también convierte los valores compatibles: si
agees la cadena"19", se convierte en el entero19. Ahora enviaremos datos incorrectos para confirmar que nuestra validación funciona.
- El ejemplo anterior genera un
ValidationErrorporqueagenecesita ser un entero y"nineteen"no se puede convertir en uno:
- Para manejar el error en lugar de dejar que detenga tu programa, captúralo con
try/except. Su métodoerrors()lista cada campo inválido:
Modo estricto
- Si también quieres rechazar cadenas como
"19", activa el modo estricto en el modelo. Así,agesolo acepta unintreal, yPerson(name="John", age="19", email="john@example.com")generaValidationError.
Creando una dataclass
- También puedes crear dataclasses con pydantic. Son similares a las dataclasses estándar de Python, pero validan sus campos como
BaseModel.
- Si enviamos la cadena
"19"aage, la convertirá alint19.
Pydantic admite la validación recursiva, lo que significa que al validar modelos anidados, también valida los modelos
internos.Si una clase tiene una lista de
Person, people: list[Person], pydantic verifica cada elemento de la lista y lo convertirá en un Person.Extras
- Pydantic tiene algunos extras, como la validación de correo electrónico y un paquete de respaldo de timezone. Para instalarlos, ejecuta los siguientes comandos:
- Puedes instalar ambos juntos ejecutando el siguiente comando.
pydantic[email]añade el tipoEmailStr, que valida el formatouser@domain.tldy normaliza la dirección.
Validar variables de entorno al iniciar
- Los bots y las APIs leen tokens y ajustes de variables de entorno. Con
pydantic-settings, una variable que falta o no es válida detiene la aplicación al iniciar con un error claro, en lugar de fallar más tarde en medio de una solicitud.
- Declara las variables que necesita tu aplicación en una clase que herede de
BaseSettings. Cada campo lee la variable de entorno con el mismo nombre, sin distinguir mayúsculas:discord_tokenleeDISCORD_TOKEN.
settings.py
- Si
DISCORD_TOKENno está definida,Settings()genera unValidationErrorparadiscord_tokencon el mensajeField required. Un valor comoPORT=abcfalla de la misma forma, porqueportdebe ser un entero. SecretStroculta el token cuando imprimes o registras los ajustes. Lee el valor real consettings.discord_token.get_secret_value().- En Square Cloud, define las variables en el dashboard o con
squarecloud app env set, y listapydantic-settingsen turequirements.txt. Consulta Variables de entorno.
Próximos pasos
Variables de entorno
Define las variables que lee tu clase de ajustes.
FastAPI
Haz deploy de una API que valida sus solicitudes con pydantic.
Bot de Discord
Aloja un bot que lee su token del entorno.
¿Te gustó este artículo?
- Creamos este contenido con mucho cuidado para ofrecer la mejor ayuda posible. Si este artículo te ayudó de alguna manera, ¡apoya nuestro trabajo! Los desarrolladores ya calificaron a Square Cloud con 4.9/5 en 402 reseñas en Google y Trustpilot: ¡deja la tuya también! Nos ayuda a entender qué es lo que más te importa.
Google Reviews
Deja tu reseña en Google Reviews.
Trustpilot
Deja tu reseña en Trustpilot.

