使用Django Logic基于url和slug添加CSS类

问题描述 投票:2回答:1

我现在拥有的:

一个带博客部分的简单个人网站。当我从导航栏转到不同的列表项时,如果li处于活动状态,则会添加“激活”类。我的博客部分出现问题。

我想要实现的目标:

当我在博客部分和博客帖子中时添加“激活”类,以便激活链接。我使用slug作为我的帖子网址。

我现在有什么,它不起作用:

template.html

<li class="{% if request.resolver_match.url_name == "index" %}activate{% endif %}"><a href='/'>Home</a></li>
<li class="{% if request.resolver_match.url_name == "blog" %}activate{% endif %}"><a href='/blog/'>Blog</a></li>
<li class="{% if request.resolver_match.url_name == "photohraphy" %}activate{% endif %}"><a href='/photography/'>Photography</a></li>

models.朋友

from django.db import models
from django.core.urlresolvers import reverse

class Post(models.Model):
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250)
    body = models.TextField()
    date = models.DateTimeField()
    updated = models.DateTimeField(auto_now=True)

    def get_absolute_url(self):
        return reverse('blog:post_detail', args=[self.slug])


    def __str__(self):
        return self.title

URLs.朋友

from django.conf.urls import url, include
from django.views.generic import ListView, DetailView
from blog.models import Post
from . import views

urlpatterns = [
    url(r'^$', views.list_of_post, name='list_of_post'),
    url(r'^(?P<slug>[-\w]+)/$', views.post_detail, name='post_detail')

views.朋友

from django.shortcuts import render, get_object_or_404
from .models import Post

def list_of_post(request):
    post = Post.objects.all()
    template = 'blog/blog.html'
    context = {'post': post}
    return render(request, template, context)

def post_detail(request, slug):
    post = get_object_or_404(Post, slug=slug)
    template = 'blog/post.html'
    context = {'post': post}
    return render(request, template, context)

我知道我必须在li类中添加一些Jinja逻辑,但我不知道如何正确设置它。我想这与get_absolute_url有关。有人可以建议一种简单而正确的方法吗?

html css django slug
1个回答
0
投票

我假设所有页面都是在没有ajax调用的情况下呈现的。在这种情况下,无论您呈现的是什么页面,只要在for eg. return self.render_to_response({'page': 'index'}) url处呈现它,就可以在上下文index中传递页面名称。然后在模板中,您可以使用简单的if条件并设置激活的类。例如。

<li class="{% if page == "index" %}activate{% endif %}"><a href='/'>Home</a></li>
<li class="{% if page == "blog" %}activate{% endif %}"><a href='/blog/'>Blog</a></li>
<li class="{% if page == "photography" %}activate{% endif %}"><a href='/photography/'>Photography</a></li>
© www.soinside.com 2019 - 2024. All rights reserved.