Dejango-理解Qorgs
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
当我添加 "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 功能应该有变化,但看不出具体是什么。
有什么想法或建议吗?
您正在尝试访问甚至没有传递给函数的 kwargs。你应该到处都有
def func(self, *args, **kwargs):
所以我通过将 url 顺序更改为来解决问题:
url(r'^tag/(?P<slug>[\w-]+)/$', TagListView.as_view(), name='tagged'),
url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', Detail.as_view(), name='detail'),
我不确定这是个好方法,但它确实有效。如果您有更多建议 - 请告诉我
我正在使用-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
当我添加 "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 功能应该有变化,但看不出具体是什么。 有什么想法或建议吗?
您正在尝试访问甚至没有传递给函数的 kwargs。你应该到处都有
def func(self, *args, **kwargs):
所以我通过将 url 顺序更改为来解决问题:
url(r'^tag/(?P<slug>[\w-]+)/$', TagListView.as_view(), name='tagged'),
url(r'^(?P<category>[\w-]+)/(?P<slug>[\w-]+)/$', Detail.as_view(), name='detail'),
我不确定这是个好方法,但它确实有效。如果您有更多建议 - 请告诉我