API для платформы создания опросов и вопросов к ним. Платформа позволяет администратору создавать опросы и с точки зрения архитектуры это будет выглядеть так:
Опрос <- Вопрос <- Вариант ответа
Таким образом, Вопросы связываются с Опросами, а Варианты ответов с Вопросами. Обычные пользователи могут получать список активных опросов и проходить их.
Анонимно (без авторизации) можно зайти только в разделы active-polls и answers.
- Перед началом работы
- Документация к API
- python 3.10
- Django 3.2
- djangorestframework
Шаг 1. Клонируйте этот репозиторий
Шаг 2. Установите зависимости:
pip install -r requirements.txt
Шаг 3. Перейдите в папку poll_api
:
cd poll_api
Шаг 4. Сделайте миграции:
python manage.py makemigrations
python manage.py migrate
Шаг 5. Создайте суперпользователя:
python manage.py createsuperuser
Будут выведены следующие выходные данные. Введите требуемое имя пользователя и пароль, напр. admin, testing321
Username (leave blank to use 'admin'): admin
Email address:
Password: ********
Password (again): ********
Superuser created successfully.
Шаг 6. Запустите сервер:
python manage.py runserver
https://poll-api-project.herokuapp.com/api/schema
https://poll-api-project.herokuapp.com/api/documentation
Перед авторизацией убедитесь, что авторизируемый пользователь присутствует в базе Users
Метод: POST
URL: http://localhost:8000/api-auth/login
Тело запроса:
- username: логин
- password: пароль
Администратор может:
- Создавать, удалять и изменять опросы
- Получать список всех опросов (активных и неактивных)
- Создавать, удалять и изменять вопросы
- Создавать, удалять и изменять варианты ответов
- Возможности обычного пользователя
Метод: GET
URL: http://localhost:8000/polls/
Метод: POST
URL: http://localhost:8000/polls/
Тело запроса:
- name: название опроса
- description: описание опроса
- start_date: дата начала опроса, формат записи: YYYY-MM-DD HH:MM
- end_date: дата конца опроса, формат записи: YYYY-MM-DD HH:MM
Метод: PATCH
URL: http://localhost:8000/polls/%poll_id%/
Тело запроса:
- name: название опроса
- description: описание опроса
- end-date: дата конца опроса, формат записи: YYYY-MM-DD HH:MM
Примечание: дату начала опроса поменять нельзя!
Метод: DELETE
URL: http://localhost:8000/polls/%poll_id%/
Метод: POST
URL: http://localhost:8000/questions/
Тело запроса:
- text: текст вопроса
- type: тип вопроса (
SING
- один вариант ответа,MULT
- несколько вариантов,FREE
- ответ на вопрос даётся текстом) - poll: id опроса, к которому нужно прикрепить создаваемый вопрос
Метод: PATCH
URL: http://localhost:8000/questions/%question_id%/
Тело запроса:
- text: текст вопроса
- type: тип вопроса (
SING
- один вариант ответа,MULT
- несколько вариантов,FREE
- ответ на вопрос даётся текстом) - poll: id опроса, к которому нужно прикрепить создаваемый вопрос
Метод: DELETE
URL: http://localhost:8000/questions/%question_id%/
Метод: POST
URL: http://localhost:8000/options/
Тело запроса:
- text: текст варианта ответа
- question: id вопроса, к которому нужно прикрепить создаваемый вариант ответа
Метод: PATCH
URL: http://localhost:8000/options/%option_id%/
Тело запроса:
- text: текст варианта ответа
- question: id вопроса, к которому нужно прикрепить создаваемый вариант ответа
Метод: DELETE
URL: http://localhost:8000/options/%option_id%/
Пользователь может:
- Получить список активных опросов
- Пройти опрос
- Посмотреть на ответы всех пользователей
Метод: GET
URL: http://localhost:8000/active-polls/
Метод: POST
URL: http://localhost:8000/answers/
Тело запроса:
- user_id: id пользователя
- poll: id опроса
- question: id вопроса
- choice: id ответа на вопрос
- text: для текста на вопрос, если ответ должен быть текстовым
Метод: GET