突出显示css中当前打开的类别选项卡的链接

时间:2012-02-01 16:48:18

标签: python css django highlight django-templates

我正在尝试突出显示当前打开的类别标签的链接,这是我已经完成的工作:

globs.py

def globs(request):
    cats = Category.objects.all()
    return {'cats': cats}

views.py

def news_by_category(request, slug):
    c = Category.objects.get(slug=slug)
    news = News.objects.filter(category=c, status='p').order_by('-id')
    #news = c.news_set.all().order_by('-id')
    return object_list(
        request,
        news,
        paginate_by = 5,
        extra_context = {'c':c},
        template_name = 'news_by_category.html')

base.html #bodyclass

<body class="{% block bodyclass %}{% endblock %}">

news_by_category.html

{% block bodyclass %}{{c|cut:" "}}{% endblock %} 

base.html

<li><h4>Categories:</h4></li>
{% for i in cats %}
<li class="{{i.name|safe|cut:" "}}_li"> 
    <a href="myurl">{{ i.name }}</a>
</li> {% endfor %}

我现在需要做的是为每个类别创建样式,在类别列表中,我可以通过在html文件中设置样式来轻松实现这一点,但我不确定这是否合适(是吗?)。我想出了一些CSS样式,

{% for i in cats %}
body.{{ i|safe|cut:" "}} li.{{i|safe|cut:" "}}_li {
    color: red;
}

但由于我无法在.css文件中使用django模板标签,因此无法使用。

我的问题: 1)我怎么能让这个CSS文件为我工作。一步一步的机会?

2)如果我在第1步失败了,那么在html文件中设置那些少数li元素的样式有多么不合适?

编辑:/尝试其他方式

我尝试过使用: base.html文件

{% for i in cats %}
<li class="{% ifequal 'request.get_full_path' '/k/{{ i.slug }}/' %}active{% endifequal %}">                 
<a href="#######">{{ i.name }}</a>
</li> {% endfor %}

的CSS

.active {{color:red;}

当我比较{{request.get_full_path}}和/k/{{i.slug}} /两者都返回相同的东西时......但如果它内部的ifequal它似乎无法正常工作。

2 个答案:

答案 0 :(得分:1)

您可以创建一个名为“active”的简单类或沿着这些行的某些内容,并将其添加到当前选项卡。然后,在CSS中将活动样式应用于该类。因此,您只需附加活动类,它将自动采用活动样式。

答案 1 :(得分:1)

如果您有网址:

{% url app:home i.slug as home %}

<li {% ifequal request.get_full_path home %}class="active"{% endifequal %}>