🏠 Домашнее задание

🎯 Pydantic: система регистрации пользователя ⏱️ Время выполнения: ~60 мин
Цель: разработать систему регистрации пользователя, используя Pydantic для валидации входных данных, обработки вложенных структур и сериализации в JSON.

Шаг 1. Подготовка проекта

1

Создай ветку Git

git checkout -b lesson/03-pydantic
2

Создай папку для урока

mkdir flask/lesson-03
cd flask/lesson-03
3

Создай и активируй виртуальное окружение

python -m venv venv
venv\Scripts\activate  # Windows
# source venv/bin/activate  # macOS / Linux
4

Установи зависимости

pip install pydantic
pip install pydantic[email]

Шаг 2. Создание моделей

5

Создай модель Address

Модель должна содержать поля:

  • city — строка, минимум 2 символа
  • street — строка, минимум 3 символа
  • house_number — число, должно быть положительным
6

Создай модель User

Модель должна содержать поля:

  • name — строка, только буквы, минимум 2 символа
  • age — число, от 0 до 120
  • email — строка, формат email
  • is_employed — булево значение, статус занятости
  • address — вложенная модель Address

Шаг 3. Валидация

7

Добавь кастомный валидатор

Если is_employed = True, возраст должен быть от 18 до 65 лет. Используй @model_validator(mode='after').

Шаг 4. Функция обработки JSON

8

Реализуй функцию register_user(json_string)

Функция должна:

  1. Принимать JSON-строку
  2. Десериализовать её в объект User через model_validate_json()
  3. В случае успеха сериализовать объект обратно в JSON через model_dump_json() и вернуть
  4. В случае ошибки вернуть сообщение об ошибке

Шаг 5. Тестирование

9

Напиши примеры JSON для проверки

Создай минимум 4 примера:

  • ✅ Успешная регистрация (все данные корректны)
  • ❌ Возраст не соответствует статусу занятости (например, 70 лет и is_employed=true)
  • ❌ Некорректный email
  • ❌ Имя содержит цифры или спецсимволы

Шаг 6. Git

10

Закоммить изменения

git add flask/lesson-03/
git commit -m "feat: урок 03 — система регистрации с Pydantic"

Критерии проверки