繁体   English   中英

Django-taggit kwargs的理解

[英]Django-taggit kwargs understanding

我正在使用-django taggit,它工作正常。 但是需要进行一些更改以扩展DetailView url,之后TagListView会出现404错误。 所以我无法理解get_absolute_url函数中的kwargs问题,但是我不知道如何解决它。

因此,可以正常工作: 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

当我在get_absolute_url中添加“ category”:self.category并压入它的网址时:

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函数中进行更改,但无法确切看到。 有什么想法或建议吗?

您正在尝试访问尚未传递给函数的kwarg。 你应该到处都有

def func(self, *args, **kwargs):

因此,我通过将网址顺序更改为来解决问题:

    url(r'^tag/(?P<slug>[\w-]+)/$', TagListView.as_view(), name='tagged'),
    url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', Detail.as_view(), name='detail'),

我不知道这是个好方法,但是可以。 如果您还有其他建议-请告诉我

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM