如何在基本模板(Django)中制作菜单?

问题描述:

如何在基本模板中创建Django中的菜单,并从数据库中获取它的内容? 我的基本模板:如何在基本模板(Django)中制作菜单?

<!DOCTYPE html> 
<html> 
    <head> 
     <title>{% block title %}My page{% endblock %}</title> 
     <link rel="stylesheet" href="{{ STATIC_URL }}css/uikit.min.css" /> 
     <script src="{{ STATIC_URL }}js/jquery.min.js"></script> 
     <script src="{{ STATIC_URL }}js/uikit.min.js"></script> 
    </head> 
    <body> 
     {% block content %} 
     {% endblock %} 
    </body> 
</html> 

PS:对不起,我的英语,我'润色。

+0

别担心你的英语。只是提供更多的信息。你是什么意思,做菜单?这可能意味着我可以想到的任何其他事情(用于创建菜单的一些项目)等HTML模板。有一些项目可以帮助创建网站菜单。或者如果你有HTML,你可以手动创建它。 –

回头一次我有同样的问题,我最终创建了一个Mixin并在那里注入了菜单,更具体的(这是在你使用基于类的视图的情况下......你应该......):

class MenuMixin(object): 
    def get_context_data(self, **kwargs): 
     context = super(MenuMixin, self).get_context_data(**kwargs) 
     context['menu'] = MenuModel.objects.all() 
     return context 


class MyListView(MenuMixin, ListView): 
    ... 
在模板

那么你可以简单:

{% include "partials/menu.html" %} 

而且你的谐音/ menu.html内:

{% for item in menu %} 
    <a href="{{ item.link }}">{{ item.name }}</a> 
{% empty %} 
    Do something for empty... 
{% endfor %} 

您可能会对django-simple-menu有兴趣。

然后以使其适应你的使用情况,您可以直接读取里面menus.py像这样的数据库项目(记住这只是一个伪代码):

# menus.py 

items = Menu.objects.all() 

for item in items: 
    Menu.add_item("main", MenuItem(item.name, item.url), 
          weight=10, 
          icon=item.name.lower())) 

你可能会认为其他解决方案是创建上下文处理器或自定义标记,但如果您的经验不足并且菜单结构更复杂(子菜单),那么您可能难以自己弄清楚。