Урок 28. Доп. практикум 5: мини-проект «Agile Projects»

📁 Блок: DRF ⏱️ Время изучения: ~120 мин 🎯 Сложность: Средняя–Высокая
#django #drf #agile #models #serializers #apiview #fileupload #мини-проект #практикум

⚡ Кратко: мини-проект Agile Projects

Веб-платформа для управления проектами, задачами и файлами в Agile-стиле. 9 задач: от создания модели Tag до REST API с загрузкой файлов. Django 5.x + DRF 3.15+, архитектура с модулем apps/.

  • Задачи 1–4 (модели): Tag, Project, ProjectFile (M2M), Task (FK к Project и User, Enum статусы/приоритеты)
  • Задачи 5–6 (теги API): TagListAPIView (GET/POST), TagDetailAPIView (GET/PUT/DELETE)
  • Задачи 7–8 (проекты API): ProjectsListAPIView (фильтрация по датам), ProjectDetailAPIView (частичное обновление)
  • Задача 9 (файлы API): валидация расширений, размер ≤ 2 MB, chunked save

Топ-3 ошибки: 1) Регистрация приложений без пути apps.tasks.apps.TasksConfig. 2) Использование models.py вместо модуля models/. 3) Отсутствие output_field в ExpressionWrapper и забытый make_aware() при фильтрации по датам.

📖 О чём этот урок

Урок 28 — дополнительный практикум 5. Задача — построить с нуля REST API-платформу «Agile Projects» для управления проектами, задачами и сотрудниками. Проект охватывает полный цикл разработки Django-приложения: проектирование моделей, создание сериализаторов, написание class-based views, регистрацию URL и загрузку файлов.

Если нужно освежить основы DRF — загляни в Урок 27 (Практикум 6: ORM).

Что строим

  • Приложение tasks: модели Tag, Task (со статусами и приоритетами через Enum), API CRUD для тегов
  • Приложение projects: модели Project, ProjectFile, API CRUD для проектов, фильтрация по временному диапазону, загрузка файлов с валидацией
  • Архитектура: модуль apps/, вложенные модули models/, views/, serializers/, utils/
  • Agile git-workflow: каждая задача завершается коммитом и pull request

📚 Что повторить перед изучением

🎯 Что изучать дальше