- Описание проекта
- Технологический стек
- Запуск проекта
- Примеры работы с проектом
- Инструкция для накачки базы из CSV-файлов:
- Шаблон наполнения env-файла
- Над frontend проекта работал
- Над backend проекта работал
Пользователи смогут публиковать рецепты, подписываться на публикации других пользователей, добавлять понравившиеся рецепты в список «Избранное», а перед походом в магазин скачивать сводный список продуктов, необходимых для приготовления одного или нескольких выбранных блюд.
В проекте было реализовано Continuous Integration и Continuous Deployment, что означает:
- автоматический запуск тестов;
- обновление образов на Docker Hub;
- автоматический деплой на боевой сервер при пуше в главную ветку master или main.
Как выглядит проект, можно посмотреть на Figma.com
Содержимое главной страницы — список первых шести рецептов, отсортированных по дате публикации (от новых к старым). Остальные рецепты доступны на следующих страницах: внизу страницы есть пагинация.
На странице — полное описание рецепта. Для авторизованных пользователей — возможность добавить рецепт в избранное и в список покупок, возможность подписаться на автора рецепта.
На странице — имя пользователя, все рецепты, опубликованные пользователем и возможность подписаться на пользователя.
Подписка на публикации доступна только авторизованному пользователю. Страница подписок доступна только владельцу.
Работа со списком избранного доступна только авторизованному пользователю. Список избранного может просматривать только его владелец.
Работа со списком покупок доступна авторизованным пользователям. Список покупок может просматривать только его владелец. Список покупок скачивается в формате PDF.
При нажатии на название тега выводится список рецептов, отмеченных этим тегом.
Клонировать репозиторий и перейти в него в терминале используя команду
cd
git clone [email protected]:aleksandr-miheichev/culinary_social_platform.git
В терминале IDE (к примеру - PyCharm) открытом в папке
foodgram-project-react/infra
Ввести команду для копирования необходимого файла на сервер:
scp docker-compose.yaml [email protected]:/home/test/docker-compose.yaml
scp data/nginx/default.conf [email protected]:/home/test/data/nginx/default.conf
В терминале IDE (к примеру - PyCharm) открытом в папке
foodgram-project-react/docs
Ввести команду для копирования необходимого файла на сервер:
scp redoc.html [email protected]:/home/test/docs/redoc.html
scp openapi-schema.yaml [email protected]:/home/test/docs/openapi-schema.yaml
Удобную веб-страницу со справочным меню, документацией для эндпоинтов и разрешённых методов, с примерами запросов, ответов и кода Вы сможете посмотреть по адресу:
https://aleksdjango.ddns.net/api/docs/
Для загрузки данных, получаемых вместе с проектом, из файлов csv в базу данных через Django ORM была написана собственная management-команда.
В терминале сервера ввести команду для просмотра описания management-команды:
sudo docker compose exec web python manage.py data_loading -h
Для выполнения процедуры загрузки в базу данных необходимо выполнить:
sudo docker compose exec web python manage.py data_loading
После этого будет выведено сообщение в терминал о начале загрузки в базу данных:
Started filling the Ingredient model from a csv file!
В случае успешного выполнения данной процедуры будет выведено сообщение в терминал:
Database successfully loaded into model!
Если ингредиент уже был загружен в базу данных, то будет выведено сообщение в терминал:
An ingredient with the name: "<наименование_ингредиента>" and the unit
"единица_измерения_ингредиента" is already in the database!
При отсутствии csv файла с данными или его неправильного наименования будет выведена ошибка:
Sorry, the file "<название_файла>" does not exist.
DB_ENGINE=django.db.backends.postgresql
DB_NAME=postgres
POSTGRES_USER=postgres
POSTGRES_PASSWORD=xxxxxyyyyyzzzzz
DB_HOST=db
DB_PORT=5432
SECRET_KEY=xxxxxyyyyyzzzzz
ALLOWED_HOSTS=['55.222.99.11', 'praktikum.ddns.net', ]
CSRF_TRUSTED_ORIGINS=['https://example.com']
NEED_POSTGRESQL=True