Приложение позволяет просматривать и создовать публикации, а также оставлять коментарии к ним. Также реализованна возможность тегирования публикаций по категироиям (управление категориями доступно администратору блога) и возможность подписываться на интересующих авторов. В сервисе реализованна авторизация по JWT-токену. Присутствует система разграничения доступа:
Анонимные пользователи:
- Просмотр любых публикаций;
Зарегистрированные пользователи:
- Список собственных подписок;
- Публикация записей и коментариев;
- Управление собственным контентом(изменение/удаление).
Администратор:
- Все выше перечисленное;
- Создание тематических групп(категорий);
- Модерирование контента(изменение/удаление публикаций других пользователей);
- Удаление и декативация пользователей, присвоение прав администратора.
Python 3.9, Django REST Framework 3.12
Обратите внимание: указанные команды приведены для Unix-систем(MacOS/Linux). Команды для Windows могут отличаться!
Клонируйте git-репозиторий выполнив команду в терминале:
git clone https://github.com/RolAlek/api_final_yatube.git
Внутри каталога с проектом создайте и активируйте виртуальное окружение:
python -m venv <название_окружения>
source <название_окружения>/bin/activate
Обновите менеджер пакетов pip и примените зависимости из файла requirements.txt:
python -m pip install --upgrade pip
pip install -r requirements.txt
Примените миграции:
python manage.py migrate
Запустите проект:
python manage.py runserver
Полуение публикаций
GET-запрос к эндпоинту http://127.0.0.1:8000/api/v1/posts/
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2021-10-14T20:41:29.648Z",
"image": "string",
"group": 0
}
]
}
Создание публикации
POST-запрос к эндпоинту http://127.0.0.1:8000/api/v1/posts/
:
{
"text": "string",
"image": "string",
"group": 0
}
В случае успеха сервер вернет ответ с кодом 200
:
{
"id": 0,
"author": "string",
"text": "string",
"pub_date": "2019-08-24T14:15:22Z",
"image": "string",
"group": 0
}
Ответ с кодом 400
- неправильно составлен запрос:
{
"text": [
"Обязательное поле."
]
}
Ответ с кодом 401
- запрос выполнен неавторизованным пользователем:
{
"detail": "Учетные данные не были предоставлены."
}