BolshakovAndrey / tree_menu

Тестовое задание для компании Uptrader - сделать django app, который будет реализовывать древовидное меню

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Django Tree Menu

Django Tree Menu представляет собой приложение для Django, которое позволяет создавать иерархическое древовидное меню, хранить его в базе данных и отображать на вашем веб-сайте с помощью пользовательских тегов шаблонов. Меню можно создавать и редактировать через стандартную админ-панель Django.

Задача

Создать Django-приложение, позволяющее:

  1. Вносить в БД меню через админку Django.
  2. Отображать меню на любой нужной странице по названию с использованием template tag.

Особенности реализации

  1. Меню создается с использованием template tag.
  2. Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
  3. Хранится в БД.
  4. Редактируется в стандартной админке Django.
  5. Активный пункт меню определяется исходя из URL текущей страницы.
  6. Меню на одной странице может быть несколько. Они определяются по названию.
  7. При клике на меню происходит переход по заданному в нем URL. URL может быть задан как явным образом, так и через named url.
  8. На отрисовку каждого меню требуется ровно 1 запрос к БД.

Стэк

  1. Django
  2. Python стандартная библиотека

Инструкции по запуску

  1. Клонируйте репозиторий и перейдите в каталог проекта.
  2. Установите Poetry, если его еще нет: pip install poetry
  3. Активируйте виртуальное окружение с помощью Poetry: poetry shell
  4. Установите все зависимости: pip install -r requirements.txt
  5. Выполните миграции: python manage.py migrate
  6. Запустите сервер: python manage.py runserver
  7. Создайте суперпользователя БД python manage.py createsuperuser
  8. Загрузите данные с помощью файла load_data.py: python load_data.py
  9. Для перехода в административную панель http://127.0.0.1:8000/admin/
  10. Для перехода в меню http://127.0.0.1:8000/tree_menu/

Лицензия

MIT License

Планы по доработке

  1. Добавить возможность добавлять стили и классы к элементам меню.
  2. Реализовать кеширование меню для оптимизации производительности.
  3. Расширить поддержку других типов баз данных.
  4. Создать дополнительные примеры и документацию по использованию приложения.

Демо: https://user-images.githubusercontent.com/19635244/235896754-4fa856e6-409d-42ee-ab27-2d159a6814e4.gif

About

Тестовое задание для компании Uptrader - сделать django app, который будет реализовывать древовидное меню


Languages

Language:Python 90.7%Language:HTML 9.3%