Я довольно новичок в Django, и я надеюсь, что смогу правильно сформулировать свой вопрос, поэтому, пожалуйста, расскажите со мной.Использование Django Logic для добавления CSS-класса на основе url с slug
То, что я прямо сейчас:
Простой персональный сайт с разделом блога. Когда я перехожу к другим элементам списка из панели навигации, он добавляет «активированный» класс, если 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.py
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.py
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.py
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, но я понятия не имею, как установить его правильно. Я предполагаю, что это имеет какое-то отношение к get_absolute_url. Может ли кто-нибудь предложить вам способ сделать это просто и правильно?
Спасибо большое
Исправьте 'urls.py', а также добавить' viewsy.py' если можно :) – opalczynski
urls.py, кажется, работает правильно. Я не понимаю, что я должен исправить. Я добавил views.py. Благодаря! – IoanCosmin
Я вижу, что urls.py на самом деле models.py - возможно, вы просто скопировали его два раза ... – opalczynski