Разработка API для загрузки публикаций и их фото с возможностью комментировать и ставить лайки.
В результате выполнения этого задания вы:
- закрепите навыки работы с моделями,
- научитесь правильно работать с сериализацией/десериализацией данных,
- получите навыки правильного проектирования API: создание эндпоинтов, использование нужных методов,
- примените полученные знания в реальном проекте для портфолио.
- Установите Python 3.x и любую IDE. Рекомендуем работать с Pycharm.
- Установите и настройте СУБД PostgreSQL.
- Установите Git и создайте аккаунт на GitHub.
- Скачайте проект, создайте виртуальное окружение и установите сторонние модули.
- Создайте БД и внесите настройки БД в settings.py.
Необходимо разработать backend приложения для социальной сети для обмена фотографиями. Прототип фронтенда приложения на скрине:
В этом проекте вы будете работать над API для загрузки публикаций и их фото с возможностью комментировать и ставить лайки.
Посты должны состоять из текста и фотографии, также должно сохраняться время создания поста.
Публикации могут создаваться только авторизованными пользователями, редактировать же публикацию может только её автор.
Комментарии могут быть написаны к определённой публикации, оставлять их могут только авторизованные пользователи. Сам комментарий состоит из текста и даты его публикации.
Помимо комментариев, пользователи также могут оставлять реакцию на публикацию в виде лайка.
При получении деталей публикации помимо полей самой публикации должен отображаться список комментариев и количество лайков к публикации, например:
{
"id": 1,
"text": "Новый прекрасный день",
"image": "/posts/image1.jpg",
"created_at": "2024-02-23T02:24:29.338414",
"comments": [
{
"author": 2,
"text": "Круто",
"created_at": "2024-02-23T05:12:31.054234"
}
],
"likes_count": 20
}Подсказки
-
для создания пользователей и получения токенов авторизации можете воспользоваться Инструкцией
-
чтобы правильно работали загрузка и отображение фото, не забудьте настроить media и static пути, а также привязать их в urls,
-
для получения связанных объектов пользуйтесь related_name, а для подсчёта количества - используйте метод count(),
-
для сериализации связанных объектов используйте вложенную сериализацию
(необязательное к выполнению, не влияет на получение зачёта)
- Реализуйте возможность загрузки нескольких фотографий к одной публикации.
- Реализуйте получение и сохранение геоданных публикации. При создании публикации пользователь может ввести необходимую локацию: страна, город, улица, достопримечательность или здание. По указанному объекту необходимо получить географические координаты (широта и долгота). Для этого вы можете воспользоваться модулем geopy, методом
geocode(). При отображении, наоборот, по координатам отобразить название объекта, используя методreverse().
- Исходный код программы загрузить на GitHub.
- Отправить ссылку на проект в личном кабинете на проверку.
Зачёт по дипломной работе можно получить, если работа соответствует критериям:
- система реализована на Django версии 3 и выше,
- интерфейс администратора создан стандартными средствами Django admin,
- в качестве СУБД использован postgresql,
- реализованы все необходимые модели и сериализаторы,
- система при работе не должна вызывать исключения и ошибки,
- описана документация по запуску проекта.
Работа направляется на доработку при несоответствии одному и более критериям.
