Skip to content

Latest commit

 

History

History
126 lines (103 loc) · 5.56 KB

File metadata and controls

126 lines (103 loc) · 5.56 KB

REST API для системы комментариев блога

Тестовое задание

Реализовать REST API для системы комментариев блога.

Функциональные требования:

У системы должны быть методы API, которые обеспечивают:

  • добавление статьи (Можно чисто номинально, как сущность, к которой крепятся комментарии)
  • добавление комментария к статье
  • добавление коментария в ответ на другой комментарий (возможна любая вложенность)
  • получение всех комментариев к статье вплоть до 3 уровня вложенности
  • получение всех вложенных комментариев для комментария 3 уровня
  • по ответу API комментариев можно воссоздать древовидную структуру

Стек технологий

Python Django Django REST Framework PostgreSQL Nginx gunicorn docker

Описание проекта

Проект разворачивается в 3-х контейнерах: backend-приложение, postgresql-база данных и nginx-сервер. Реализована авторизация через auth токены. Приготовлены тестовые данные для заполнения БД. Логин и пароль для суперюзера - admin / qwerty234.

Запуск проекта через Docker

  • Клонировать репозиторий и перейти в него в командной строке. Создать и активировать виртуальное окружение:
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

Документация к проекту

Документация доступна здесь после установки приложения.

Запуск проекта в dev-режиме

  • Клонировать репозиторий и перейти в него в командной строке:
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

Документацию можно найти по адресу