将CSS项添加到Django菜单

时间:2014-11-27 11:37:57

标签: python html css django

我需要在菜单项中添加css类。我无法弄清楚如何做到这一点......

我正在使用Django CMS,但不希望客户端改变菜单。 这就是我到目前为止所做的:

from menus.base import Menu, NavigationNode
from menus.menu_pool import menu_pool
from django.utils.translation import ugettext_lazy as _

class MyMenu(Menu):

    def get_nodes(self, request):
        nodes = []
        n1 = NavigationNode(_('Start'), "/", 1)
        n2 = NavigationNode(_('Item 1'), "item1/", 2)
        n3 = NavigationNode(_('Item 2'), "item2/", 3)
        nodes.append(n1)
        nodes.append(n2)
        nodes.append(n3)
        return nodes

menu_pool.register_menu(MyMenu)

我的菜单看起来像这样:

<ul>
<li class="child selected"><a href="/">Start</a></li>
<li class="child sibling"><a href="item1/">Item 1</a></li>
<li class="child sibling"><a href="item2/">Item 2</a></li>              
</ul>

但我希望它是这样的:

<ul>
<li class="start child selected"><a href="/">Start</a></li>
<li class="item1 child sibling"><a href="item1/">Item 1</a></li>
<li class="item2 child sibling"><a href="item2/">Item 2</a></li>            
</ul>

所以我认为我需要一个修饰语,但我找不到合适的文档。

我对Django很新,所以我肯定我很想念,但我希望能够一步一步地完成它:)提前谢谢!

2 个答案:

答案 0 :(得分:1)

show_menu标记呈现当前页面的导航。如果向项目添加menu / menu.html模板,则可以覆盖外观和HTML。 from the docs

所以在你的menu.html中你会有类似的东西:

{% for child in children %}
  here you can adjust the apperance
{% endfor %}

这是我用于我的项目的menu.html:http://pastebin.com/jMzz1GqE

答案 1 :(得分:1)

感谢doniyor,我设法让事情得到解决。

我添加了每个菜单项:

n2 = NavigationNode(_('Item 1'), "item1/", 2, attr={'class': 'item1-class'})

然后在菜单模板中:

<a class="{{ child.attr.class }}" ...