/Tree-menu

Simple django tree-menu. For websites, the tree menu is an important part

Primary LanguagePython

Simple tree menu

Stack:

Python Django

Задача:

Нужно сделать django app, который будет реализовывать древовидное меню, соблюдая следующие условия:

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

Нужен django-app, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию.

{% draw_menu 'main_menu' %}


Запуск через pip

  1. Перейти в папку с проектом
    cd Tree-menu
  2. Создать виртуальное окружение
    python -m venv menuvenv
  3. Активировать созданное виртуальное окружение:
    • menuvenv\Scripts\activate.bat - для Windows;

    • source menuvenv/bin/activate - для Linux и MacOS.

  4. Установить Django
    pip install django
  5. Перейти в папку, где располагается файл manage.py
    cd DjangoApp
  6. Запустить локальный сервер Django
    python manage.py runserver

Запуск через Docker

  1. Перейти в папку с проектом
    cd Tree-menu
  2. Собрать образ на основе Dockerfile
    docker build . -t tree-menu
  3. Запустить контейнер
    docker run -p -t 8000:8000 tree-menu

Для примера в проекте есть нужные миграции, суперпользователь и готовая стандартная база данных

Логин, пароль: admin