如何在基本模板(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:对不起,我的英语,我'润色。
答
回头一次我有同样的问题,我最终创建了一个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()))
你可能会认为其他解决方案是创建上下文处理器或自定义标记,但如果您的经验不足并且菜单结构更复杂(子菜单),那么您可能难以自己弄清楚。
别担心你的英语。只是提供更多的信息。你是什么意思,做菜单?这可能意味着我可以想到的任何其他事情(用于创建菜单的一些项目)等HTML模板。有一些项目可以帮助创建网站菜单。或者如果你有HTML,你可以手动创建它。 –