Как создать динамическую структуру меню с помощью Django? - PullRequest
4 голосов
/ 04 ноября 2010

Мне нужна структура меню с меню и подменю, и в зависимости от того, какая страница просматривается в данный момент, я хочу выделить элементы в обоих меню.Есть ли какие-либо модули или приложения, которые обеспечивают это?Если нет, то как лучше всего подойти к проблеме?

Ответы [ 2 ]

6 голосов
/ 04 ноября 2010

Быстрый поиск в Google дает это:

http://code.google.com/p/django-treemenus/

http://code.google.com/p/django-menuse/

Вы также можете создать такое простое меню вручную, просто перейдите к шаблону списка пунктов меню, активного меню и списка пунктов подменю для активного меню и активного элемента подменю:

     <ul>
     {% for item in menu_items %}
         <li>
         {% if item.id == active_menu_item %}
             <span class="active-menu-item">{{ item }}</span>
             <ul>
                   {# Similar code for submenu items #}
             </ul>
         {% else %}
             <a class="inactive-menu-item" href="{{ item.url }}">{{ item }}</a>
         {% endif %}
         </li>
     {% endfor %}
     </ul>
1 голос
/ 10 января 2019

Согласно djangopackages , самое популярное приложение меню в 2018 году - django-sitetree.

Выделение элемента можно выполнить с помощью второго инструмента по ссылке выше, django-activeurl .

Однако для больших сайтов django-sitetree может иметь производительность проблем.

Существует еще один способ, связанный с иерархической структурой меню: modified preorder tree traversal, который оптимизирует запросы к базе данных для поиска по дереву.

Используйте django-mptt для хранения иерархических данных (например, меню с подменю на неограниченную глубину). Используйте django-mptt-admin , чтобы легко управлять ими в меню администратора. contenttypes framework может быть полезен для более общих меню (это не показано в руководстве django-mptt).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...