Проект «Сайт рецептов» на Django
Проект выполнен в качестве задания на итоговой аттестации по программе «Веб-разработка на 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
, а для разделения каталогов при написании путей используется символ обратного деления \
вместо /
. Для установки проекта на сайт необходимо выполнить следующие действия: 1. Скачать последнюю версию проекта с GitHub git clone https://github.com/mkazachkin/shakeit
2. При необходимости изменить настройки приложения в файле settings.py
, расположенном в каталоге приложения shakeit/shakeit/shakeitapp/
. 3. Создать копию файла secrets.template.py
, расположенного в каталоге shakeit/shakeit/shakeitapp/
под именем secrets.py
в том же каталоге. Для генерации изображения ингредиентов нейросетью Kandinsky получить аутентификационные токены на сайте Fusion Brain и внести их в файл secrets.py
. 4. Создать виртуальное окружение Python python3 -m venv /путь/к/новому/виртуальному/окружению
. Например, если вы находитесь в каталоге корневом каталоге проекта shakeit
, достаточно выполнить команду python3 -m venv ./.venv
. 5. Дальнейшие действия производить с активированным виртуальным окружением. Если вы создали виртуальное окружение в каталоге проекта, то находясь в нем же, виртуальное окружение активируется командой source ./venv/bin/activate
. Подробная документация о виртуальном окружении и методах активации в других ОС доступна на официальном сайте Python. 6. Дальнейшие действия производить в каталоге shakeit/shakeit/
7. Создать каталог для хранения лог файлов командой md logs
и сам лог-файл командой touch logs/django.log
. Если логирование не требуется, или есть потребность изменить местоположение лог-файла, необходимо внести соответствующие изменения в глобальные настройки проекта в файле settings.py
расположенного в каталоге shakeit/shakeit/shakeit/
. 8. Установить необходимые для работы приложения модули 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 Михаил Казачкин.
Описание
Проект выполнен в качестве итоговой аттестации по программе "Веб-разработка на Python" в GeekBrains.