簡體   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