kirkir Cooking Book реализован для публикации рецептов. Авторизованные пользователи могут подписываться на понравившихся авторов, добавлять рецепты в избранное, в покупки, скачать список покупок ингредиентов для добавленных в покупки рецептов.
- Создать аккаунт.
- Просматривать рецепты на главной.
- Просматривать отдельные страницы рецептов.
- Просматривать страницы пользователей.
- Фильтровать рецепты по тегам.
- Входить в систему под своим логином и паролем.
- Выходить из системы (разлогиниваться).
- Менять свой пароль.
- Создавать/редактировать/удалять собственные рецепты
- Просматривать рецепты на главной.
- Просматривать страницы пользователей.
- Просматривать отдельные страницы рецептов.
- Фильтровать рецепты по тегам.
- Работать с персональным списком избранного: добавлять в него рецепты или удалять их, просматривать свою страницу избранных рецептов.
- Работать с персональным списком покупок: добавлять/удалять любые рецепты, выгружать файл с количеством необходимых ингредиентов для рецептов из списка покупок.
- Подписываться на публикации авторов рецептов и отменять подписку, просматривать свою страницу подписок.
Администратор обладает всеми правами авторизованного пользователя. Плюс к этому он может:
- изменять пароль любого пользователя,
- создавать/блокировать/удалять аккаунты пользователей,
- редактировать/удалять любые рецепты,
- добавлять/удалять/редактировать ингредиенты.
- добавлять/удалять/редактировать теги. Все эти функции реализованы в стандартной админ-панели Django.
git clone git@github.com:kireev20000/kirkir_cooking_book.git
- Установите и активируйте виртуальное окружение:
- для MacOS
python3 -m venv venv
- для Windows
python -m venv venv
source venv/bin/activate
source venv/Scripts/activate
- Установите зависимости из файла requirements.txt:
pip install -r requirements.txt
- Примените миграции:
python manage.py migrate
- В папке с файлом manage.py выполните команду для запуска локально:
python manage.py runserver
- Локально Документация доступна по адресу:
http://127.0.0.1/api/docs/
Из папки infra/ разверните контейнеры при помощи docker-compose:
docker-compose up -d --build
Выполните миграции:
docker-compose exec backend python manage.py migrate
Создайте суперпользователя:
winpty docker-compose exec backend python manage.py createsuperuser
Соберите статику:
docker-compose exec backend python manage.py collectstatic --no-input
Наполните базу данных ингредиентами и тегами. Выполняйте команду из дериктории где находится файл manage.py:
docker-compose exec backend python manage.py import_csv_data
Остановка проекта:
docker-compose down
Cоздать и заполнить .env файл в директории infra
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=postgres
DB_HOST=db
DB_PORT=5432
TOKEN=252132607137
ALLOWED_HOSTS=*
POST
| Создание рецепта: http://127.0.0.1:8000/api/recipes/
Request:
{
"ingredients": [
{
"id": 1123,
"amount": 10
}
],
"tags": [
1,
2
],
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAgMAAABieywaAAAACVBMVEUAAAD///9fX1/S0ecCAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAACklEQVQImWNoAAAAggCByxOyYQAAAABJRU5ErkJggg==",
"name": "string",
"text": "string",
"cooking_time": 1
}
Response:
{
"id": 0,
"tags": [
{
"id": 0,
"name": "Завтрак",
"color": "#E26C2D",
"slug": "breakfast"
}
],
"author": {
"email": "user@example.com",
"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/users/{id}/subscribe/
Response:
{
"email": "user@example.com",
"id": 0,
"username": "string",
"first_name": "Вася",
"last_name": "Пупкин",
"is_subscribed": true,
"recipes": [
{
"id": 0,
"name": "string",
"image": "http://foodgram.example.org/media/recipes/images/image.jpeg",
"cooking_time": 1
}
],
"recipes_count": 0
}
Киреев Александр Олегович
Python-разработчик (Backend)
E-mail: kireev20000@yandex.ru
Telegram: @kireev20000