Урок 28. Доп. практикум 5: мини-проект «Agile Projects»
⚡ Кратко: мини-проект 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
📚 Что повторить перед изучением
- ← Урок 27: Практикум 6 — агрегация и ORM
- Django: модели, миграции, INSTALLED_APPS
- DRF: APIView, сериализаторы ModelSerializer, Router/URL
- Python: Enum, datetime, calendar, os/pathlib
- Git: ветки, коммиты, pull request
🎯 Что изучать дальше
- → Урок 29: Основы DRF — часть 2
- DRF: ViewSet, Router, permissions
- DRF: Пагинация, фильтры (django-filter)
- Django: signals, celery для задач