Этот проект представляет собой API для управления списком дел, разработанный с использованием Django и Django Rest Framework (DRF). Приложение предоставляет пользователям возможность создавать, редактировать, удалять задачи, а также управлять их выполнением. Реализован гибкий поиск и фильтрация задач с сортировкой и пагинацией.
- Обязательные поля:
Заголовок
Описание
- Необязательные поля:
Срок
(дата завершения)Теги
(выбираются из существующего списка или добавляются новые)
- Автоматически заполняемые поля:
Выполнено
(по умолчаниюFalse
)Дата создания
(автоматическая генерация)
Позволяет обновлять существующую задачу, изменяя её поля.
Удаление задачи из списка.
Обновление статуса задачи на "выполнено".
- Фильтрация:
- По тегам
- По статусу выполнения (
Выполнено
илиНе выполнено
)
- Сортировка:
- По сроку
- По дате создания
- По заголовку
- Пагинация:
- Поддержка разделения задач на страницы для удобства просмотра.
- Backend: Django, Django Rest Framework (DRF)
- База данных: PostgreSQL
- Документация API: Swagger
git clone <URL_репозитория>
cd <имя_проекта>
Создайте и активируйте виртуальное окружение:
python -m venv venv
source venv/bin/activate # Для Windows: venv\Scripts\activate
Установите зависимости:
pip install -r requirements.txt
- Подключитесь к PostgreSQL через командную строку:
psql -U postgres
- Создайте базу данных:
CREATE DATABASE todo_db
- Убедитесь, что база создана:
\l
- Примените миграции:
python manage.py migrate
python manage.py runserver
Теперь API доступно по адресу: http://127.0.0.1:8000
Документация доступна по адресу: http://127.0.0.1:8000/swagger/
models/ — модели для базы данных
serializers/ — сериализация данных для API
views/ — обработчики запросов
urls/ — маршрутизация эндпоинтов
Пример запросов к API можно найти в документации Swagger. API поддерживает следующие основные эндпоинты:
GET /tasks/ — получение списка задач с фильтрацией, сортировкой и пагинацией
POST /tasks/ — создание новой задачи
PUT /tasks/{id}/ — редактирование задачи
DELETE /tasks/{id}/ — удаление задачи
PATCH /tasks/{id}/mark_complete/ — отметка задачи как выполненной
Создание задачи
POST /tasks/
{
"title": "Пример задачи",
"description": "Описание задачи",
"deadline": "2023-12-31",
"tags": ["Запланировано"]
}
Фильтрация задач
Получение выполненных задач с определённым тегом:
GET /tasks/?status=completed&tags=Запланировано