{"id":15180549,"url":"https://github.com/herrshneider/api_yamdb_group","last_synced_at":"2025-02-24T11:13:55.683Z","repository":{"id":245919746,"uuid":"819524948","full_name":"herrShneider/api_yamdb_group","owner":"herrShneider","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-24T17:53:49.000Z","size":79,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-24T11:13:51.123Z","etag":null,"topics":["api","django","django-framework","django-rest-framework","python3","rest-api"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/herrShneider.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-24T17:20:21.000Z","updated_at":"2024-06-28T07:02:40.000Z","dependencies_parsed_at":"2024-06-28T10:05:01.756Z","dependency_job_id":null,"html_url":"https://github.com/herrShneider/api_yamdb_group","commit_stats":null,"previous_names":["herrshneider/api_yamdb_group"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herrShneider%2Fapi_yamdb_group","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herrShneider%2Fapi_yamdb_group/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herrShneider%2Fapi_yamdb_group/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/herrShneider%2Fapi_yamdb_group/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/herrShneider","download_url":"https://codeload.github.com/herrShneider/api_yamdb_group/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240466797,"owners_count":19805862,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","django","django-framework","django-rest-framework","python3","rest-api"],"created_at":"2024-09-27T16:22:10.803Z","updated_at":"2025-02-24T11:13:55.652Z","avatar_url":"https://github.com/herrShneider.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# API Yamdb\r\n\r\n# Учебный проект.  \r\n\r\n## Проект YaMDb собирает отзывы пользователей на произведения. \r\n\r\nСами произведения в YaMDb не хранятся, здесь нельзя посмотреть фильм или послушать музыку.\r\nПроизведения делятся на категории, такие как «Книги», «Фильмы», «Музыка». Например, в категории «Книги» могут быть произведения «Винни-Пух и все-все-все» и «Марсианские хроники», а в категории «Музыка» — песня «Давеча» группы «Жуки» и вторая сюита Баха. Список категорий может быть расширен (например, можно добавить категорию «Изобразительное искусство» или «Ювелирка»). \r\nПроизведению может быть присвоен жанр из списка предустановленных (например, «Сказка», «Рок» или «Артхаус»). \r\nДобавлять произведения, категории и жанры может только администратор.\r\nБлагодарные или возмущённые пользователи оставляют к произведениям текстовые отзывы и ставят произведению оценку в диапазоне от одного до десяти (целое число); из пользовательских оценок формируется усреднённая оценка произведения — рейтинг (целое число). На одно произведение пользователь может оставить только один отзыв.\r\nПользователи могут оставлять комментарии к отзывам.\r\nДобавлять отзывы, комментарии и ставить оценки могут только аутентифицированные пользователи.\r\n\r\nЦелью проекта является закрепление знаний в области создания REST API на базе Django-проекта.\r\n\r\nВ проекте реализованы возможности:\r\n    - регистрация пользователей;\r\n    - CRD для категорий произведений;\r\n    - CRD для жанров произведений;\r\n    - CRUD для произведений (метод PUT не поддерживается);\r\n    - CRUD для отзывов (метод PUT не поддерживается);\r\n    - CRUD для комментариев на отзывы (метод PUT не поддерживается);\r\n    - CRUD для пользователей (метод PUT не поддерживается);\r\n    - получение данных о своей учетной записи / обновление данных своей учетной записи.\r\n\r\nАлгоритм регистрации пользователей\r\n    Пользователь отправляет POST-запрос на добавление нового пользователя с параметрами email и username на эндпоинт /api/v1/auth/signup/.\r\n    YaMDB отправляет письмо с кодом подтверждения (confirmation_code) на адрес email.\r\n    Пользователь отправляет POST-запрос с параметрами username и confirmation_code на эндпоинт /api/v1/auth/token/, в ответе на запрос ему приходит token (JWT-токен).\r\n    При желании пользователь отправляет PATCH-запрос на эндпоинт /api/v1/users/me/ и заполняет поля в своём профайле (описание полей — в документации).\r\n\r\nПользовательские роли:\r\n    Аноним — может просматривать описания произведений, читать отзывы и комментарии.\r\n    Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать отзывы и ставить оценку произведениям (фильмам/книгам/песенкам), может комментировать чужие отзывы; может редактировать и удалять свои отзывы и комментарии. Эта роль присваивается по умолчанию каждому новому пользователю.\r\n    Модератор (moderator) — те же права, что и у Аутентифицированного пользователя плюс право удалять любые отзывы и комментарии.\r\n    Администратор (admin) — полные права на управление всем контентом проекта. Может создавать и удалять произведения, категории и жанры. Может назначать роли пользователям.\r\n    Суперюзер Django — обладет правами администратора (admin)\r\n\r\n\r\nСтэк: Python 3.9.10 / Django 3.2 / djangorestframework 3.12.4\r\n\r\n\r\nУстановка:\r\n\r\nКлонировать репозиторий и перейти в него в командной строке:\r\n\r\n```\r\ngit clone git@github.com:fluegergehaimer/api_yamdb.git\r\n```\r\nПерейти в папку с проектом:\r\n```\r\ncd api_yamdb\r\n```\r\nCоздать и активировать виртуальное окружение:\r\n\r\n```\r\npython3 -m venv env\r\n```\r\n\r\n```\r\nsource env/bin/activate\r\n```\r\n\r\nУстановить зависимости из файла requirements.txt:\r\n\r\n```\r\npython3 -m pip install --upgrade pip\r\n```\r\n\r\n```\r\npip install -r requirements.txt\r\n```\r\n\r\nПерейти в корневую папку:\r\n```\r\ncd api_yamdb\r\n```\r\n\r\nВыполнить миграции:\r\n\r\n```\r\npython3 manage.py migrate\r\n```\r\n\r\nЗапустить проект:\r\n\r\n```\r\npython3 manage.py runserver\r\n```\r\nДокументация по API доступна при запущенном сервере по:\r\n\r\n[Redoc](http://127.0.0.1:8000/redoc/)\r\n\r\nДля иморта данных из CSV файлов в БД воспользуйтесь коммандой:\r\n```\r\npython3 manage.py import_csv\r\n```\r\n\r\nАвторы: \r\n\r\n[Чередниченко Никита](https://github.com/fluegergehaimer)\r\n\r\n[Ласовский Владимир](https://github.com/herrShneider?tab=repositories)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherrshneider%2Fapi_yamdb_group","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fherrshneider%2Fapi_yamdb_group","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fherrshneider%2Fapi_yamdb_group/lists"}