Меню, реализованное через template tag. Хранится в БД, активный пункт меню определяется из текущего url.
git clone https://github.com/Nekttuman/DjangoMenuTag.git
cd .\DjangoMenuTag\
python -m venv env
.\env\Scripts\activate.bat
pip install -r requirements.txt
python manage.py runserver
Open localhost: http://127.0.0.1:8000/
Нужно сделать django app, который будет реализовывать древовидное меню, соблюдая следующие условия:
- Меню реализовано через template tag
- Все, что над выделенным пунктом - развернуто. Первый уровень вложенности под выделенным пунктом тоже развернут.
- Хранится в БД.
- Редактируется в стандартной админке Django
- Активный пункт меню определяется исходя из URL текущей страницы 6 )Меню на одной странице может быть несколько. Они определяются по названию.
- При клике на меню происходит переход по заданному в нем URL. URL может быть задан как явным образом, так и через named url. 8)На отрисовку каждого меню требуется ровно 1 запрос к БД
Нужен django-app, который позволяет вносить в БД меню (одно или несколько) через админку, и нарисовать на любой нужной странице меню по названию.
{% draw_menu 'main_menu' %}
При выполнении задания из библиотек следует использовать только Django и стандартную библиотеку Python.
Меню хранятся в модели Menu items. Добавление нового элемента в меню:

Поскольку запрос к Бд дожен быть единственным при отрисовке меню, в draw_menu, фала menu_tags.py используем:
menu_items = MenuItem.objects.filter(menu_name=menu_name).prefetch_related('children')


