Копировать репозиторий
clone https://github.com/nurlybek-dev/polls-test.git
cd polls-test
Установить зависимости используя виртуальное окружение либо систему. Для pipenv
pipenv install
pipenv shell
Для virtualenv
virtualenv venv
source venv\Scripts\activate
# Для Windows
venv\Scripts\activate
С активированным виртуальным окружением создаём базу данных
python manage.py makemigrations
python manage.py migrate
python manage.py runserver
Создаём суперпользователя
python manage.py createsuperuser
Endpoints:
- /admin/ - Django Admin Panel
- /api-auth/login/ - DRF Login
- /api-auth/logout/ - DRF Logout
- /api/ - ApiRoot
- /api/admin/polls/ - ViewSet опросников, доступ только для админов
- /api/admin/questions/ - ViewSet вопросов, доступ только для админов
- /api/admin/options/ - ViewSet вариантов ответов, доступ только для админов
- /api/admin/answers/ - ViewSet ответов пользователей, доступ только для админов
- /api/polls/ - Список доступных опросников на данный момент
- /api/polls/{pk} - Детальный просмотр опросника с вложенными вопросами
- /api/answers/{pk} - Список все пройденных опросников с ответами
Для создания опроса необходимо передать следующие данные
{
"name": String,
"start_date": String,
"end_date": String,
"description": Text
}
Для создания вопросов необходимо передать следующие данные. Можно передать варианты ответов в списке options либо отдельно через его api.
{
"poll": poll id,
"text": String,
"type": Integer,
"options": [ Optional
{"text": String}
]
}
Для создания варантов ответов для вопроса необходимо передать следующие данные
{
"question": question id,
"text": String
}
Для создания ответов необходимо передать следующие данные
{
"question": question id,
"choice": choice id,
"text": String
}
Пользователь получает список доступных опросов через /api/polls/.
Ответ присыает туда же POST запросом. Данные которые нужно отправить.
Одно из двух text или choice. Программа допускает заполнения обоих полей.
{
"user_id": user id,
"poll_id": poll id,
"answers": [
{
"question": id,
"text": String,
"choice": Integer
}
]
}
Для получения ответов пользователя /api/answers/{pk}/ Вернет список все пройденных опросников.