Бэкенд-приложение на Django REST Framework для автоматизации процессов и управления данными тату-салона.
На первом этапе я спроектировала и реализовала реляционную базу данных для тату-студии. Для этого я создала следующие ключевые модели:
Master(Мастера) — хранит информацию о татуировщиках: имя, опыт работы и их почасовую ставку.Style(Стили) — каталог стилей татуировок с названиями и описаниями.Sketch(Эскизы) — каталог доступных тату-эскизов. Каждый эскиз я связала с мастером, который его выполнил, и конкретным стилем. Также добавила статус доступности.Client(Клиенты) — база данных клиентов студии с именами и номерами телефонов.Session(Сеансы записи) — связующая модель для записи на сеанс. Она объединяет в себе клиента, мастера, выбранный эскиз (может быть не заполнен), дату, время и статус текущего сеанса.
На втором этапе я реализовала полный набор CRUD-операций с использованием Django REST Framework (ModelViewSet). Я настроила следующие типы эндпоинтов для всех ресурсов:
GET (один ресурс)— детальное получение информации об объекте по его ID. Чтобы оптимизировать нагрузку на базу данных, я дополнительно внедрила кэширование ответов на 15 минут.GET (группа ресурсов)— получение списков с поддержкой фильтрации через query-параметры (например, реализовала поиск мастера по имени или отбор сеансов по ID мастера/клиента).POST— создание нового ресурса. Этот метод я переопределила для поддержки массового создания: теперь моё API умеет принимать как один JSON-объект, так и массив из нескольких объектов (группу ресурсов) за один запрос.PATCH— частичное обновление данных. Я добавила поддержку как одиночного, так и группового обновления записей по списку ID.DELETE— удаление данных. Я настроила этот метод так, что можно удалять записи из базы данных как поодиночке, так и целыми группами сразу (массовое удаление).
На последнем этапе я защитила проект и сделала документацию:
- Защита проекта: Я сделала так, чтобы в систему нельзя было зайти без специального электронного ключа (токена). Для этого я добавила эндпоинты, которые выдают этот ключ при вводе логина и пароля, и проверяют его при каждом действии.
- Ограничение прав: Я настроила правила для каталога эскизов. Смотреть эскизы и предлагать новые могут абсолютно все (даже неавторизованные гости). А вот редактировать или удалять чужие эскизы могут только вошедшие в систему мастера.
- Интерактивная документация: Чтобы бэкендом было удобно пользоваться, я подключила инструмент Swagger. Он сам сканирует весь мой код и собирает его в красивую веб-страницу.
Эта страница доступна прямо в браузере по адресу: http://127.0.0.1:8000/api/schema/swagger-ui/ Там можно увидеть все доступные адреса (эндпоинты) проекта и сразу протестировать их работу.