Skip to content

akiqq/api_yamdb

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Проект YaMDb собирает отзывы пользователей на произведения. Произведения делятся на категории:«Книги», «Фильмы», «Музыка». Список категорий может быть расширен (например, можно добавить категорию «Картины» или «Ювелирные изделия»). Произведению может быть присвоен жанр из списка предустановленных (например, «Легенда», «Поп» или «Триллер»). Администратор может добавлять произведения, категории и жанры. Пользователи оставляют к произведениям отзывы и ставят произведению оценку в диапазоне от 1 до 10; из пользовательских оценок формируется рейтинг. Пользователь может оставить только один отзыв на одно произведение. Пользователи могут оставлять комментарии к отзывам. Добавлять отзывы, комментарии и ставить оценки могут только аутентифицированные пользователи.

Используемый стек:

Python 3.10, Django 3.2, DRF 3.12, JWT, DJOSER, SQLite

Как запустить проект:

Скачать и установить python 3.10 с сайта https://www.python.org/.

Зарегистрируйтесь на GitHub, при регистрации укажите имя пользователя, адрес электронной почты и придумайте пароль. После того как вы нажмёте кнопку «Создать аккаунт», система попросит вас подтвердить электронную почту. Загляните в почтовый ящик, там будет письмо с кодом подтверждения.

Скачайте и установите GitBash. Запустите Git Bash (если у вас Windows) или Терминал (на Linux/MacOS). Выполните команду ssh-keygen Консоль попросит ввести путь к файлу, в который будут сохранены сгенерированные ключи, и одновременно предложит сохранить их в файл по умолчанию: Enter file in which to save the key (/home/имя_пользователя/.ssh/id_rsa): Сохраните ключи в папку по умолчанию: для этого нажмите Enter на Windows или Return на macOS. При создании ключей система попросит придумать пароль для доступа к ключам. Когда вы будете задавать пароль, в терминале ничего не отобразится, даже звёздочки. Рисунок в окне терминала будет свидетельствовать, что ключи успешно созданы:

Теперь необходимо сохранить открытый ключ в вашем аккаунте на GitHub. Выведите ключ в терминал командой: cat .ssh/id_rsa.pub

Cкопируйте ключ от символов ssh-rsa , включительно, и до конца:

Зайдите в свой аккаунт на GitHub, перейдите в раздел настроек.

Выберите пункт SSH and GPG keys; для создания нового ключа нажмите на кнопку New SSH key в правом верхнему углу.

Откроется страница с двумя полями ввода: Title (заголовок ключа). Когда будете задавать заголовок, учитывайте, что в дальнейшем вы, возможно, добавите и другие ключи. Например, с другого своего компьютера, чтобы получить с него доступ к репозиториям на GitHub. Поэтому выбирайте для каждого ключа уникальные заголовки, например ключ с домашнего компьютера можно назвать HomePC, а с рабочего — WorkPC. Key (ключ). Сюда необходимо вставить скопированный из терминала ключ.

Нажмите кнопку Add SSH key — ключ добавится к вашему аккаунту. Если вы захотите получить SSH-доступ к своему аккаунту на GitHub с нескольких компьютеров, для каждого из них должен быть создан и добавлен свой SSH-ключ.

Место, где хранится и обновляется код проекта, чаще всего в виде файлов, называют репозито́рием.

Клонировать репозиторий и перейти в него в командной строке:

Напечатайте в терминале команду git clone, после неё поставьте пробел, вставьте скопированный адрес и выполните команду:

git clone git@github.com:akiqq/api_yamdb.git

Cоздать и активировать виртуальное окружение:

python3 -m venv env source env/bin/activate python3 -m pip install --upgrade pip

Установить зависимости из файла requirements.txt:

pip install -r requirements.txt

Выполнить миграции:

python3 manage.py migrate

Запустить проект:

python3 manage.py runserver

Примеры запросов:


POST http://127.0.0.1:8000/api/v1/auth/signup/


{
  "email": "user@example.com",
  "username": "string"
}

Пример ответа.


{
  "username": "string",
  "confirmation_code": "string"
}


POST http://127.0.0.1:8000/api/v1/auth/token/ Получаем токен.


{
  "username": "string",
  "confirmation_code": "string"
}

Пример ответа.


{
  "token": "string"
}

GET http://127.0.0.1:8000/api/v1/categories/


{
  "count": 0,
  "next": "string",
  "previous": "string",
  "results": [
    {
      "name": "string",
      "slug": "string"
    }
  ]
}

POST http://127.0.0.1:8000/api/v1/categories/


{
"username": "string",
"password": "string"
}

PATCH http://127.0.0.1:8000/api/v1/titles/{titles_id}/


{
  "name": "string",
  "year": 0,
  "description": "string",
  "genre": [
    "string"
  ],
  "category": "string"
}

Пример ответа:


{
  "id": 0,
  "name": "string",
  "year": 0,
  "rating": 0,
  "description": "string",
  "genre": [
    {
      "name": "string",
      "slug": "string"
    }
  ],
  "category": {
    "name": "string",
    "slug": "string"
  }
}

DELETE http://127.0.0.1:8000/api/v1/titles/{titles_id}/

GET http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/


{
  "count": 0,
  "next": "string",
  "previous": "string",
  "results": [
    {
      "id": 0,
      "text": "string",
      "author": "string",
      "score": 1,
      "pub_date": "2019-08-24T14:15:22Z"
    }
  ]
}

POST http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/


{
  "text": "string",
  "score": 1
}

Пример ответа.


{
  "id": 0,
  "text": "string",
  "author": "string",
  "score": 1,
  "pub_date": "2019-08-24T14:15:22Z"
}

GET http://127.0.0.1:8000/api/v1/titles/{title_id}/reviews/{review_id}/


{
  "id": 0,
  "text": "string",
  "author": "string",
  "score": 1,
  "pub_date": "2019-08-24T14:15:22Z"
}

POST http://127.0.0.1:8000/api/v1/users/


{
  "username": "string",
  "email": "user@example.com",
  "first_name": "string",
  "last_name": "string",
  "bio": "string",
  "role": "user"
}

Пример ответа.


{
  "username": "string",
  "email": "user@example.com",
  "first_name": "string",
  "last_name": "string",
  "bio": "string",
  "role": "user"
}

Авторы:
Александр - Тимлид
Дмитрий - Разработчик
Владимир - Разработчик

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published