Перейти к основному контенту
Tech Path Finder
КурсыИнтервьюКод-ревьюБлог
Tech Path Finder

Персонализированный путеводитель в IT. Квизы, мок-интервью, код ревью и аналитика прогресса.

@potapov_me

Платформа

  • Курсы
  • Прогресс
  • Мок-интервью
  • Код ревью
  • Живое ревью с ИИ
  • Тренажёр переговоров
  • Закладки

Контент

  • Блог
  • Главная
  • Обратная связь

Компания

  • О проекте
  • Тарифы
  • Условия использования
  • Конфиденциальность
  • Согласие на обработку данных
  • Cookie
  • Реквизиты

Аккаунт

  • Войти
  • Зарегистрироваться
  • Профиль

© 2026 Tech Path Finder. Все права защищены.

·ИП Потапов К.С.·Политика конфиденциальности·
Сделано с ❤️ в России
  1. Pydantic v2: От основ до продвинутых паттернов
Python экосистема·18 тем·176 вопросов·уровень Middle

Pydantic v2: От основ до продвинутых паттернов

Всеобъемлющий практический курс по библиотеке Pydantic версии 2. Изучите валидацию данных, сериализацию, работу с настройками, интеграцию с FastAPI и SQLAlchemy, продвинутые паттерны валидации и создание надёжных моделей данных для production-проектов. Курс включает 18 тем с мини-проектами в каждой.

Начать курс

Pydantic v2

Ядро Pydantic v2 написано на Rust, но для тех, кто пришёл из первой версии, важнее другое: поменялись имена валидаторов, конфигурация модели, правила сериализации. Рецепты из v1, которых в интернете по-прежнему больше, в v2 либо не работают, либо работают не так — и это первая причина, по которой валидация внезапно пропускает то, что должна была отсечь.

Восемнадцать тем, у каждой мини-проект. Начало предсказуемое: типы полей, вложенные модели, Field с ограничениями. Затем валидаторы — на поле и на модель, в режимах before, after и wrap; разница между ними определяет, увидит валидатор сырые данные или уже приведённые к типу.

Дальше сериализация, которой в v2 неожиданно много: model_dump и model_dump_json, include и exclude, псевдонимы, exclude_none, вычисляемые поля через @computed_field, свои сериализаторы через @field_serializer и передача контекста в момент сериализации.

Отдельные темы — под то, что появляется в больших проектах: ConfigDict и настройка поведения модели, TypeAdapter для валидации без объявления модели, обобщённые модели, дискриминированные объединения для полиморфных данных, pydantic-settings с приоритетами источников (переменные окружения, .env, аргументы командной строки).

Интеграции разобраны отдельно: request- и response-модели в FastAPI, DTO поверх SQLAlchemy через from_attributes. Финал — структура ValidationError и свои сообщения об ошибках, профилирование валидации, сравнение производительности с v1 и production-паттерны: разделение входных и выходных моделей, версионирование схем.

Нужен Python с аннотациями типов; знание Pydantic v1 не обязательно, а местами даже мешает.

  1. 1

    Введение в Pydantic: зачем и почему

    Что такое Pydantic, зачем он нужен, установка и первый запуск. Базовая модель и валидация по умолчанию.

    8 вопросов
  2. 2

    Типы полей: от простых к сложным

    Встроенные типы данных Pydantic, валидация строк, чисел, дат, списков и словарей.

    10 вопросов
  3. 3

    Вложенные модели и композиции

    Создание сложных структур данных через вложенные модели, списки моделей, опциональные поля.

    8 вопросов
  4. 4

    Валидация полей: Field и валидаторы

    Использование Field для ограничения значений, gt, lt, min_length, regex и другие встроенные валидаторы.

    10 вопросов
  5. 5

    Кастомные валидаторы: field и model

    Написание собственных валидаторов, режимы before/after/wrap, валидация нескольких полей сразу.

    10 вопросов
  6. 6

    Сериализация: model_dump и model_dump_json

    Преобразование моделей в dict и JSON, режимы include/exclude, by_alias, exclude_none.

    10 вопросов
  7. 7

    Вычисляемые поля: @computed_field

    Создание полей, вычисляемых на лету, кэширование, зависимости между полями.

    10 вопросов
  8. 8

    Конфигурация моделей: ConfigDict

    Настройка поведения моделей через ConfigDict: str_strip_whitespace, extra, populate_by_name и другие.

    10 вопросов
  9. 9

    TypeAdapter: валидация вне моделей

    Валидация произвольных типов без создания модели, кастомизация конфигурации.

    10 вопросов
  10. 10

    Обобщённые модели: Generic и параметризация

    Создание универсальных моделей с типами-параметрами, переиспользование логики валидации.

    10 вопросов
  11. 11

    Дискриминированные объединения: Annotated и Tag

    Работа с Union-типами, дискриминаторы для точного выбора модели, валидация полиморфных данных.

    10 вопросов
  12. 12

    Pydantic Settings: управление настройками

    Загрузка настроек из env-переменных, .env-файлов, CLI-аргументов. Приоритеты источников.

    10 вопросов
  13. 13

    Интеграция с FastAPI: request/response модели

    Использование Pydantic в FastAPI для валидации запросов, ответов и ошибок.

    10 вопросов
  14. 14

    Интеграция с SQLAlchemy: ORM-модели и Pydantic

    Создание Pydantic-моделей на основе SQLAlchemy, режим from_attributes, DTO-паттерн.

    10 вопросов
  15. 15

    Продвинутая сериализация: сериализаторы и контекст

    Кастомные сериализаторы через @field_serializer, режим wrap, передача контекста при сериализации.

    10 вопросов
  16. 16

    Обработка ошибок: ValidationError и кастомизация

    Структура ошибок валидации, извлечение деталей, кастомные сообщения об ошибках.

    10 вопросов
  17. 17

    Производительность: оптимизация валидации

    Профилирование Pydantic, кэширование, lazy-валидация, сравнение v1 и v2.

    10 вопросов
  18. 18

    Production-паттерны: лучшие практики

    Архитектурные паттерны для production: DTO, разделение моделей, версионирование, миграции схем.

    10 вопросов
  19. Зачёт

    Доступен после всех тем (0 из 18)

  20. Экзамен

    Доступен после зачёта

24 / 24

BaseModel

Основные концепции

Базовый класс для всех Pydantic-моделей. Предоставляет функциональность валидации, сериализации и представления данных.

Пример

class User(BaseModel): name: str age: int

Связанные термины

Field

Валидация

Функция для настройки отдельного поля модели: задание значений по умолчанию, ограничений (gt, lt, min_length), описаний и алиасов.

Пример

name: str = Field(min_length=2, max_length=50, description='Имя пользователя')

Связанные термины

ConfigDict / model_config

Основные концепции

Словарь конфигурации модели, определяющий поведение Pydantic: обработка лишних полей, пробелы в строках, популяция по имени и т.д.

Пример

model_config = ConfigDict(str_strip_whitespace=True, extra='forbid')

Связанные термины

@field_validator

Валидация

Декоратор для создания кастомных валидаторов отдельных полей. Поддерживает режимы 'before', 'after', 'wrap'.

Пример

@field_validator('email') @classmethod def validate_email(cls, v): if '@' not in v: raise ValueError('Invalid email') return v

Связанные термины

@model_validator

Валидация

Декоратор для валидации всей модели целиком, когда нужно проверить взаимосвязь нескольких полей.

Пример

@model_validator(mode='after') def check_dates(self): if self.end_date < self.start_date: raise ValueError('end_date must be after start_date') return self

Связанные термины

Валидация

Валидация

Процесс проверки входных данных на соответствие ожидаемым типам и ограничениям. Pydantic автоматически преобразует данные и выбрасывает ValidationError при ошибках.

Пример

try: user = User(age='not_a_number') except ValidationError as e: print(e.errors())

Связанные термины

ValidationError

Валидация

Исключение, выбрасываемое при ошибке валидации. Содержит детальную информацию о всех ошибках: поле, сообщение, тип ошибки.

Пример

from pydantic import ValidationError try: User(age=-5) except ValidationError as e: for error in e.errors(): print(error['loc'], error['msg'])

Связанные термины

model_dump()

Сериализация

Метод для преобразования модели в словарь Python. Поддерживает опции include, exclude, by_alias, exclude_none, mode (python/json).

Пример

user.model_dump(include={'name', 'age'}, exclude_none=True)

Связанные термины

model_dump_json()

Сериализация

Метод для сериализации модели в JSON-строку. Аналог model_dump(), но возвращает строку вместо словаря.

Пример

json_str = user.model_dump_json(indent=2)

Связанные термины

Сериализация

Сериализация

Процесс преобразования Pydantic-модели в формат для передачи (dict, JSON). В v2 полностью переписан с использованием Rust-библиотеки pydantic-core.

Пример

data = model.model_dump() json_str = model.model_dump_json()

Связанные термины

@field_serializer

Сериализация

Декоратор для кастомизации сериализации отдельного поля. Позволяет изменить формат вывода значения.

Пример

@field_serializer('created_at') def serialize_date(self, value): return value.strftime('%Y-%m-%d')

Связанные термины

@model_serializer

Сериализация

Декоратор для кастомизации сериализации всей модели. Позволяет полностью переопределить логику вывода.

Пример

@model_serializer def serialize_model(self): return {'custom': self.value}

Связанные термины

@computed_field

Продвинутые концепции

Декоратор для создания вычисляемых полей — свойств, которые вычисляются при сериализации и не хранятся в модели.

Пример

@computed_field @property def full_name(self) -> str: return f'{self.first_name} {self.last_name}'

Связанные термины

TypeAdapter

Продвинутые концепции

Класс для валидации и сериализации произвольных типов без создания BaseModel. Полезен для валидации списков, словарей, Union-типов.

Пример

from pydantic import TypeAdapter adapter = TypeAdapter(list[int]) data = adapter.validate_python(['1', '2', '3']) # [1, 2, 3]

Связанные термины

Обобщённые модели (Generics)

Продвинутые концепции

Модели с типами-параметрами, позволяющие создавать универсальные структуры данных. Используют typing.Generic и TypeVar.

Пример

T = TypeVar('T') class Response(BaseModel, Generic[T]): data: T status: str

Связанные термины

Дискриминированное объединение

Продвинутые концепции

Union-тип с дискриминатором — полем, по которому Pydantic определяет конкретную модель. Ускоряет валидацию и даёт точные ошибки.

Пример

class Cat(BaseModel): pet_type: Literal['cat'] meows: int class Dog(BaseModel): pet_type: Literal['dog'] barks: float Pet = Annotated[Cat | Dog, Field(discriminator='pet_type')]

Связанные термины

Annotated

Продвинутые концепции

Тип из typing для добавления метаданных к типу. В Pydantic используется для валидаторов, дискриминаторов, сериализаторов.

Пример

from typing import Annotated email: Annotated[str, Field(pattern=r'^.+@.+\..+$')]

Связанные термины

Pydantic Settings

Интеграция

Отдельный пакет (pydantic-settings) для загрузки настроек из env-переменных, .env-файлов, CLI. Расширяет BaseModel функциональностью конфигурации.

Пример

class Settings(BaseSettings): database_url: str debug: bool = False model_config = SettingsConfigDict(env_file='.env')

Связанные термины

from_attributes

Интеграция

Опция ConfigDict, позволяющая создавать Pydantic-модели из атрибутов ORM-объектов (SQLAlchemy, Django ORM).

Пример

model_config = ConfigDict(from_attributes=True) user = User.model_validate(orm_user_instance)

Связанные термины

model_validate()

Основные концепции

Метод для валидации данных и создания модели. Аналог конструктора, но более явный и поддерживает режим from_attributes.

Пример

user = User.model_validate({'name': 'John', 'age': 30})

Связанные термины

Alias (алиас поля)

Основные концепции

Альтернативное имя поля для сериализации/десериализации. Полезно для работы с внешними API, где имена полей отличаются.

Пример

user_name: str = Field(alias='userName')

Связанные термины

extra

Основные концепции

Опция ConfigDict, определяющая поведение при наличии лишних полей во входных данных: 'ignore', 'forbid', 'allow'.

Пример

model_config = ConfigDict(extra='forbid') # выбросит ошибку на лишние поля

Связанные термины

Literal

Продвинутые концепции

Тип из typing, разрешающий только конкретные значения. Используется для дискриминированных объединений и ограничений.

Пример

status: Literal['active', 'inactive', 'pending']

Связанные термины

DTO (Data Transfer Object)

Интеграция

Паттерн проектирования для передачи данных между слоями приложения. В Pydantic реализуется через разделение моделей на Request/Response DTO.

Пример

class UserCreateDTO(BaseModel): email: str password: str class UserResponseDTO(BaseModel): id: int email: str

Связанные термины

Частые вопросы о курсе «Pydantic v2: От основ до продвинутых паттернов»

Состав курса, уровни, практика и способы проверки знаний.

Что входит в курс «Pydantic v2: От основ до продвинутых паттернов»?

Курс включает 18 тем и 176 вопросов с разбором ответа. Начать можно с первой темы курса.

Для какого уровня рассчитан курс «Pydantic v2: От основ до продвинутых паттернов»?

Маршрут охватывает уровни Middle. Темы расположены от основы к более сложным инженерным задачам, поэтому можно начать с подходящего места и не пропускать важные зависимости.

Как проверить, что материал усвоен?

После прохождения тем доступен зачёт по курсу «Pydantic v2: От основ до продвинутых паттернов» — 20 случайных вопросов с порогом 80%. После зачёта открывается экзамен с развёрнутыми ответами и автоматической оценкой, приближённый к техническому собеседованию.

Курс «Pydantic v2: От основ до продвинутых паттернов» бесплатный?

Да, курс полностью бесплатный: все 18 тем доступны без оплаты.