Реализовать REST API для системы комментариев блога.
У системы должны быть методы API, которые обеспечивают:
- добавление статьи (Можно чисто номинально, как сущность, к которой крепятся комментарии)
- добавление комментария к статье
- добавление коментария в ответ на другой комментарий (возможна любая вложенность)
- получение всех комментариев к статье вплоть до 3 уровня вложенности
- получение всех вложенных комментариев для комментария 3 уровня
- по ответу API комментариев можно воссоздать древовидную структуру
Проект разворачивается в 3-х контейнерах: backend-приложение, postgresql-база данных и nginx-сервер. Реализована авторизация через auth токены. Приготовлены тестовые данные для заполнения БД. Логин и пароль для суперюзера - admin / qwerty234.
- Клонировать репозиторий и перейти в него в командной строке. Создать и активировать виртуальное окружение:
git clone https://github.com/Seniacat/test_api
cd test_api/
- Cоздать и открыть файл .env с переменными окружения:
cd infra/
touch .env
Заполнить .env файл с переменными окружения по примеру (SECRET_KEY см. в файле settings.py). Необходимые для работы проекта переменные окружения можно найти в файле .env.example в текущей директории:
echo DB_ENGINE=django.db.backends.postgresql >> .env
echo DB_NAME=postgres >> .env
echo POSTGRES_PASSWORD=postgres >> .env
echo POSTGRES_USER=postgres >> .env
echo DB_HOST=db >> .env
echo DB_PORT=5432 >> .env
echo SECRET_KEY=************ >> .env
- Установить и запустить приложения в контейнерах:
docker-compose up --build
Запустить миграции, собрать статику:
docker-compose exec backend python manage.py migrate
docker-compose exec backend python manage.py collectstatic --no-input
Загрузить в БД тестовые данные:
docker-compose exec backend python manage.py loaddata data.json
Документация доступна здесь после установки приложения.
- Клонировать репозиторий и перейти в него в командной строке:
git clone https://github.com/Seniacat/test_api.git
cd test_api/
- Cоздать и активировать виртуальное окружение:
python3 -m venv env
source env/bin/activate (Mac OS, Linux) или source venv/Scripts/activate (Win10)
- Установить зависимости из файла requirements.txt:
python3 -m pip install --upgrade pip
pip install -r requirements.txt
- Cоздать в директории infra/ файл .env с переменными окружения:
cd infra/
touch .env
Заполнить .env файл с переменными окружения по примеру (SECRET_KEY см. в файле settings.py). Необходимые для работы проекта переменные окружения можно найти в файле .env.example в текущей директории:
echo DB_ENGINE=django.db.backends.postgresql >> .env
echo DB_NAME=postgres >> .env
echo POSTGRES_PASSWORD=postgres >> .env
echo POSTGRES_USER=postgres >> .env
echo DB_HOST=db >> .env
echo DB_PORT=5432 >> .env
echo SECRET_KEY=************ >> .env
- Выполнить миграции:
python3 manage.py migrate
Запустить проект:
python3 manage.py runserver
Документацию можно найти по адресу