如何使用Django创建动态菜单结构?

时间:2010-11-04 08:44:16

标签: django menu

我想要一个带菜单和子菜单的菜单结构,具体取决于 当前查看的页面,我想突出显示两个菜单中的项目。是 有没有提供此功能的模块或应用程序?如果没有,那将是最好的方式 解决问题?

2 个答案:

答案 0 :(得分:6)

快速谷歌搜索提供了这个:

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 :(得分:0)

根据djangopackages,2018年最受欢迎的菜单应用是django-sitetree

可以使用上面链接中的第二个工具django-activeurl来突出显示项目。

但是,对于大型站点,django-sitetree可能存在performance问题。

还有另一种与菜单的层次结构有关的方法:modified preorder tree traversal,它可以优化数据库查询以查找树。

使用django-mptt存储层次结构数据(例如具有无限深度子菜单的菜单)。使用django-mptt-admin在管理菜单中轻松管理它们。 contenttypes框架可能对于更通用的菜单很有用(django-mptt教程中未显示)。