Проект выполнен в качестве задания на итоговой аттестации по программе «Веб-разработка на Python» студентом GeekBrains Казачкиным М. Ю.
Проект написан на Python 3 (тестировалось на 3.9.18) с использованием фреймворка Django и дополнительных библиотек Python.
Основное приложение (shakeitapp) предполагает следующую функциональность:
- На главной странице демонстрируются 5 самых просматриваемых рецептов в неделю, месяц, год
- Пользователи могут просматривать рецепты коктейлей
- Пользователи могут искать рецепты коктейлей
- Поисковая строка находится в верхней части каждой страницы
- Пользователь может воспользоваться каталогом вида коктейля
- Пользователь может воспользоваться каталогом ингредиентов
- Пользователи могут регистрироваться на сайте
- Зарегистрированные пользователи могут добавлять рецепты на сайт
- Зарегистрированные пользователи могут добавлять рецепты в закладки, доступные для просмотра в личном кабинете
- Администратор сайта может редактировать каталоги и таблицы в панели администратора
- Администратор сайта может запустить генерацию изображений ингредиентов нейросетью Kandinsky, при наличии доступа к API нейросети (требуется регистрация)
API реализовано с помощью фреймворка REST и предполагает следующую функциональность
- Информация о лайках (закладках) предоставляется через REST API (приложение shakeitapi) для авторизованных пользователей
- Информацию о видах ингредиентов из каталога
- Информацию о видах коктейлей из каталога
- Информацию об используемых единицах измерения в рецептах
Для нормального использования сайта на стороне пользователя должны быть выполнены следующие условия:
- В браузере должно быть разрешено сохранение cookie (для сохранения сессии пользователя на сайте)
- В браузере должна быть включена поддержка JavaScript (для работы формы добавления рецепта и демонстрации 5 самых просматриваемых рецептов)
Процесс установки описан для систем с ОС Linux и тестировался на Альт Рабочая станция 10. В другом окружении процесс установки не должен отличаться, но некоторые команды будут выполняться иначе. Так, в Windows, вместо команды python3
вводится команда python
, а для разделения каталогов при написании путей используется символ обратного деления \
вместо /
. Для установки проекта на сайт необходимо выполнить следующие действия:
- Скачать последнюю версию проекта с GitHub
git clone https://github.com/mkazachkin/shakeit
- При необходимости изменить настройки приложения в файле
settings.py
, расположенном в каталоге приложенияshakeit/shakeit/shakeitapp/
. - Создать копию файла
secrets.template.py
, расположенного в каталогеshakeit/shakeit/shakeitapp/
под именемsecrets.py
в том же каталоге. Для генерации изображения ингредиентов нейросетью Kandinsky получить аутентификационные токены на сайте Fusion Brain и внести их в файлsecrets.py
. - Создать виртуальное окружение Python
python3 -m venv /путь/к/новому/виртуальному/окружению
. Например, если вы находитесь в каталоге корневом каталоге проектаshakeit
, достаточно выполнить командуpython3 -m venv ./.venv
. - Дальнейшие действия производить с активированным виртуальным окружением. Если вы создали виртуальное окружение в каталоге проекта, то находясь в нем же, виртуальное окружение активируется командой
source ./venv/bin/activate
. Подробная документация о виртуальном окружении и методах активации в других ОС доступна на официальном сайте Python. - Дальнейшие действия производить в каталоге
shakeit/shakeit/
- Создать каталог для хранения лог файлов командой
md logs
и сам лог-файл командойtouch logs/django.log
. Если логирование не требуется, или есть потребность изменить местоположение лог-файла, необходимо внести соответствующие изменения в глобальные настройки проекта в файлеsettings.py
расположенного в каталогеshakeit/shakeit/shakeit/
. - Установить необходимые для работы приложения модули Python
pip install -r requirements.txt
- Произвести инициализацию базы данных приложения, выполнив команды в каталоге
shakeit/shakeit/
python3 manage.py makemigrations
python3 manage.py migrate
python3 manage.py initdb
- Если настроен доступ к нейросети Kandinsky, сгенерировать персональные изображения для базовых ингредиентов. Убедится, что доступ по API работает корректно.
python3 manage.py bettercallkandinsky
- Запуск приложения.
a. Запуск приложение в тестовом режиме средствами Django осуществляется командой
python3 manage.py runserver
. Тестовый режим предназначен исключительно для проверки работоспособности приложения. Использование тестового режима для эксплуатации приложения не допускается. b. Перед запуском приложения на сервер необходимо внести соотвествующие окружению настройки в файлsettings.py
проекта, обеспечивающие его безопасность. - Перейти по адресу на сайте
/admin/
войти под учетной записьюadmin
с паролемadmin
. Сменить в панели администратора имя и пароль суперпользователя. Убедится, что таблицы созданы и начальные данные в них присутствуют. - Если были сгенерированы персональные изображения ингредиентов, просмотреть таблицу изображений ингредиентов и установить им статус
Одобрено
, чтобы они отображались на сайте. Для повторной генерации изображений в будущем установить статусОтклонено
. Настроить автоматическое выполнение командыpython3 manage.py bettercallkandinsky
при необходимости. - Перейти на главную страницу сайта и убедится, что сайт функционирует нормально.
14.04.2024. Полностью реализован базовый функционал.
Доработки пока не запланированы.
Все изображения базовой версии сгенерированы с помощью нейросети Kandinsky (Fusion Brain) или созданы автором.
Дизайн, логотип созданы автором.
Исходные коды размещены на сервисе GitHub.
© 2024 Михаил Казачкин.