recipe-share - это онлайн-платформа для обмена рецептами приготовления различных блюд. Пользователи могут создавать свои рецепты, просматривать рецепты других пользователей, а также добавлять их в "Избранное" или "Список покупок". Более 2000 ингридиентов с соответствующими единицами измерения уже предзагружено и доступно для выбора при создании рецепта. Присутствует также возможность добавить изображение блюда. Полезная функция "Список покупок" позволяет, добавив в корзину несколько рецептов, скачать результирующий список ингридиентов, в котором количества одинаковых ингридиентов суммируются. Удобдно для похода в магазин.
git clone git@github.com:Scorcer777/foodgram-project-react.git
touch .env
Скопировать в файл следующее содержимое:
DEBUG=False
DB_NAME=postgres
DB_ENGINE=django.db.backends.postgresql
POSTGRES_USER=postgres
POSTGRES_PASSWORD=123
DB_HOST=db
DB_PORT=5432
SECRET_KEY=<change_me>
ALLOWED_HOSTS=130.193.42.123,127.0.0.1,localhost,blackwaterpark.ddns.net
DJANGO_SUPERUSER_EMAIL=fornka2006@yandex.ru
DJANGO_SUPERUSER_USERNAME=NoTiltToday
DJANGO_SUPERUSER_PASSWORD=Scorcer777
4. Собрать контейнеры. Находясь в директории с файлом docker-compose.yml ввести в терминале команду:
docker compose up
6. Открыть в браузере URL http://localhost/ для работы с сайтом или запустить программу Postman(или аналогичную для работы с API) для выполнения запросов.
- Пользователь отправляет POST-запрос на добавление нового пользователя на эндпоинт localhost/api/users/ со следующими обязательными параметрами:
{
"email": "vpupkin@yandex.ru",
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Пупкин",
"password": "Qwerty123"
}
- Для получения auth token пользователь отправляет POST-запрос с параметрами username и passworn на эндпоинт /api/auth/token/login/:
{
"email": "vpupkin@yandex.ru",
"password": "Qwerty123"
}
- Далее, при выполнении запросов через Postman, требующих аутентификации пользователя, необходимо указываеть в Headers параметр Autorization со значением Token <код полученного auth token>.
Аноним — может просматривать описания рецептов, просматривать страницы пользователей. Аутентифицированный пользователь (user) — может, как и Аноним, читать всё, дополнительно он может публиковать и редактировать свои рецепты, добавлять любые рецепты их в избранное, подписываться на пользователей и скачивать свой "Список покупок". Эта роль присваивается по умолчанию каждому новому пользователю. Суперюзер Django — обладет правами администратора (admin), полные права на управление всем контентом проекта.
- GET localhost/api/users/ - получить список всех пользователей.
- GET localhost/api/users/id(целое число)/ - получить профиль пользователя.
- POST localhost/api/users/ - зарегистрировать нового пользователя. Содержимое(обязательные поля)
{
"email": "vpupkin@yandex.ru",
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Пупкин",
"password": "Qwerty123"
}
- POST http://localhost/api/auth/token/login/ - получить токен авторизации. Содержимое(обязательные поля)
{
"email": "vpupkin@yandex.ru",
"password": "Qwerty123"
}
- POST localhost/api/users/id(целое число)/subscribe/ - подписаться на пользователя.
- GET localhost/api/recipes/ - получить список всех рецептов.
- GET localhost/api/recipes/id(целое число)/ - получить рецепт.
- POST localhost/api/recipes/ (доступно только авторизованным пользователям.) Содержимое(обязательные поля)
{
"ingredients": [
{
"id": 1123,
"amount": 10
}
],
"tags": [
1,
2
],
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAgMAAABieywaAAAACVBMVEUAAAD///9fX1/S0ecCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNoAAAAggCByxOyYQAAAABJRU5ErkJggg==",
"name": "string",
"text": "string",
"cooking_time": 1
}
- POST http://localhost/api/recipes/id(целое число)/favorite/ - добавление рецепта в Избранное.
- POST http://localhost/api/recipes/id(целое число)/shopping_cart/ - добавление рецепта в Список покупок.
- GET http://localhost/api/recipes/download_shopping_cart/ - скачать список покупок в виде PDF или TXT файла.