我正在尝试突出显示当前打开的类别标签的链接,这是我已经完成的工作:
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它似乎无法正常工作。
答案 0 :(得分:1)
您可以创建一个名为“active”的简单类或沿着这些行的某些内容,并将其添加到当前选项卡。然后,在CSS中将活动样式应用于该类。因此,您只需附加活动类,它将自动采用活动样式。
答案 1 :(得分:1)
如果您有网址:
{% url app:home i.slug as home %}
<li {% ifequal request.get_full_path home %}class="active"{% endifequal %}>