Какие данные валидируют с помощью Pydantic
1️⃣ Как кратко ответить
Pydantic валидирует и преобразует данные в Python, обеспечивая проверку типов, значений и структур данных. Он поддерживает встроенные типы Python, такие как int, float, str, list, а также сложные структуры, включая вложенные модели и пользовательские типы.
2️⃣ Подробное объяснение темы
Pydantic использует Python-аннотации типов для определения структуры данных и их валидации. Он поддерживает как простые, так и сложные типы данных, включая:
- Простые типы:
int,float,str,bool - Коллекции:
list,tuple,set,dict - Вложенные модели: возможность создавать сложные структуры данных
- Пользовательские типы: возможность определения собственных типов и правил валидации
Пример кода
from pydantic import BaseModel, ValidationError, conint
# Определение модели данных с использованием Pydantic
class User(BaseModel):
id: conint(gt=0) # Поле id должно быть целым числом больше 0
name: str # Поле name должно быть строкой
age: int # Поле age должно быть целым числом
# Создание экземпляра модели с корректными данными
user = User(id=1, name='Alice', age=30)
# Попытка создать экземпляр модели с некорректными данными
try:
user = User(id=-1, name='Bob', age='thirty')
except ValidationError as e:
print(e)
# Комментарии к коду:
# 1. Импортируем необходимые классы из Pydantic.
# 2. Определяем класс User, наследующий от BaseModel, который описывает структуру данных.
# 3. Поле id должно быть целым числом больше 0, что задается с помощью conint(gt=0).
# 4. Поле name должно быть строкой.
# 5. Поле age должно быть целым числом.
# 6. Создаем экземпляр User с корректными данными.
# 7. Пытаемся создать экземпляр User с некорректными данными, что вызывает ValidationError.
# 8. Обрабатываем ValidationError и выводим сообщение об ошибке.
Pydantic автоматически проверяет данные при создании экземпляра модели. Если данные не соответствуют заданным типам или ограничениям, выбрасывается исключение ValidationError, содержащее информацию о том, какие поля не прошли валидацию и почему.
🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!
Подписаться