Foodgram - сайт, на котором пользователи могут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Пользователям сайта также будет доступен сервис «Список покупок». Он позволит создавать список продуктов, которые нужно купить для приготовления выбранных блюд с возможностью скачать файл с перечнем и количеством необходимых ингредиентов для всех рецептов.
- Регистрация и авторизация пользователя.
- Создание/обновление/удаление рецепта: название, описание, время приготовления, выбор ингредиентов, тегов, загрузка фотографии.
- Просмотр выбранного рецепта.
- Просмотр всех рецептов всех пользователей.
- Просмотре всех рецептов выбранного пользователя.
- Подписка на пользователей.
- Добавление рецептов в Избанное.
- Добавление рецептов в Список покупок.
- Скачивание файла с перечнем и количеством ингредиентов из Списка покупок.
- Фильтрация рецептов по тегам.
- Клонируйте репозиторий
> git clone [email protected]:Lozhkin-pa/foodgram-project-react.git
- Установите и активируйте виртуальное окружение
> python -m venv venv
> source venv/Scripts/activate - для Windows
> source venv/bin/activate - для Linux
- Установите зависимости
> python -m pip install --upgrade pip
> pip install -r requirements.txt
- Перейдите в папку backend и выполните миграции
> cd backend
> python manage.py migrate
- Создайте суперпользователя
> python manage.py createsuperuser
- Загрузите подготовленную базу ингредиентов
> python manage.py import_data
- Запустите проект
> python manage.py runserver
- Создайте папку проекта в домашней директории сервера и перейдите в нее
> mkdir foodgram
> cd foodgram
- Скопируйте на сервер в папку проекта файл docker-compose.production.yml
- Скачайте с Docker Hub на сервер образы для контейнеров
> sudo docker compose -f docker-compose.production.yml pull
- Запустите контейнеры в режиме демона
> sudo docker compose -f docker-compose.production.yml up -d
- Выполните команды для миграций и сборки статики
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py migrate
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py collectstatic
> sudo docker compose -f docker-compose.production.yml exec backend cp -r /app/collect_static/. /static_backend/static/
- Загрузите подготовленную базу ингредиентов
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py import_data
- Создайте суперпользователя
> sudo docker compose -f docker-compose.production.yml exec backend python manage.py createsuperuser
- GET: http://127.0.0.1:8000/api/users/ - показать список всех пользователей.
Пример ответа (200 OK):
{
"count": 123,
"next": "http://foodgram.example.org/api/users/?page=4",
"previous": "http://foodgram.example.org/api/users/?page=2",
"results": [
{
"email": "[email protected]",
"id": 0,
"username": "string",
"first_name": "Вася",
"last_name": "Пупкин",
"is_subscribed": false
}
]
}
- POST: http://127.0.0.1:8000/api/users/ - регистрация пользователя.
Пример тела запроса:
{
"email": "[email protected]",
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Пупкин",
"password": "Qwerty123"
}
Пример ответа (200 OK):
{
"email": "[email protected]",
"id": 0,
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Пупкин"
}
- GET: http://127.0.0.1:8000/api/recipes/ - показать список всех рецептов.
Пример ответа (200 OK):
{
"count": 123,
"next": "http://foodgram.example.org/api/recipes/?page=4",
"previous": "http://foodgram.example.org/api/recipes/?page=2",
"results": [
{
"id": 0,
"tags": [
{
"id": 0,
"name": "Завтрак",
"color": "#E26C2D",
"slug": "breakfast"
}
],
"author": {
"email": "[email protected]",
"id": 0,
"username": "string",
"first_name": "Вася",
"last_name": "Пупкин",
"is_subscribed": false
},
"ingredients": [
{
"id": 0,
"name": "Картофель отварной",
"measurement_unit": "г",
"amount": 1
}
],
"is_favorited": true,
"is_in_shopping_cart": true,
"name": "string",
"image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
"text": "string",
"cooking_time": 1
}
]
}
- POST: http://127.0.0.1:8000/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
}
Пример ответа (200 OK):
{
"id": 0,
"tags": [
{
"id": 0,
"name": "Завтрак",
"color": "#E26C2D",
"slug": "breakfast"
}
],
"author": {
"email": "[email protected]",
"id": 0,
"username": "string",
"first_name": "Вася",
"last_name": "Пупкин",
"is_subscribed": false
},
"ingredients": [
{
"id": 0,
"name": "Картофель отварной",
"measurement_unit": "г",
"amount": 1
}
],
"is_favorited": true,
"is_in_shopping_cart": true,
"name": "string",
"image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
"text": "string",
"cooking_time": 1
}
- Python 3.2.0
- Django 3.2.3
- Django Rest Framework 3.12.4
- Djoser 2.1.0
- Gunicorn 20.1.0
- Nginx 1.21.3
- Docker 20.10.14
Бэкенд-разработка: Павел Ложкин
Доменное имя: https://myfoodgramproject.sytes.net/
username: Admin
email: [email protected]
password: Admin