Я использую django taggit, и он отлично работает. Но необходимо внести некоторые изменения, чтобы расширить URL-адрес DetailView, и после них TagListView отключился с ошибкой 404. Итак, я понимаю эту проблему с kwargs в функции get_absolute_url, но не могу понять, как это исправить.
Итак, работайте нормально: models.py
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"slug": self.slug})
urls.py:
url(r'^(?P<slug>[\w-]+)/$', Detail.as_view(), name='detail'),
url(r'^tag/(?P<slug>[\w-]+)/$', TagListView.as_view(), name='tagged'),
views.py:
class TagListView(ListView):
template_name = "posts/postlist.html"
paginate_by = "3"
def get_queryset(self):
return Post.objects.filter(tags__slug=self.kwargs.get("slug")).all()
def get_context_data(self, **kwargs):
context = super(TagListView, self).get_context_data(**kwargs)
context["tag"] = self.kwargs.get("slug")
return context
И когда я добавляю "category": self.category в get_absolute_url и URL-адреса, он разбивается:
models.py:
def get_absolute_url(self):
return reverse("posts:detail", kwargs={"category": self.category, "slug": self.slug})
urls.py:
url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', Detail.as_view(), name='detail'),
url(r'^tag/(?P<slug>[\w-]+)/$', TagListView.as_view(), name='tagged'),
Я предполагаю, что должны быть изменения в функции get_context_data, но не могу понять, что именно. Любые идеи или советы, пожалуйста?