【发布时间】:2012-02-24 08:44:16
【问题描述】:
我正在尝试突出显示当前打开的类别选项卡的链接,这是我已经完成的:
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 里面似乎不起作用。
【问题讨论】:
标签: python css django highlight django-templates