【发布时间】:2017-09-24 10:00:27
【问题描述】:
使用 Django,我正在寻找一种方法来使用一个 url 模式(带有 slug)来查询一个模型,如果没有找到查询第二个模型。我正在使用基于类的视图。
我正在关注这个answer,并且正在调用下一个视图。但后来我收到以下错误:
“必须使用对象 pk 或 slug 调用通用详细视图。”
我不知道如何将 slug 传递给下一个视图。
我的网址:
url(r'^(?P<slug>[-\w]+)/$', SingleView.as_view(), name='singleview'),
我的 CBV:
class SingleView(DetailView):
def dispatch(self, request, *args, **kwargs):
post_or_page_slug = kwargs.pop('slug')
if Page.objects.filter(slug=post_or_page_slug).count() != 0:
return PageDetailView.as_view()(request, *args, **kwargs)
elif Post.objects.filter(slug=post_or_page_slug).count() != 0:
return PostDetailView.as_view()(request, *args, **kwargs)
else:
raise Http404
class PageDetailView(DetailView):
model = Page
template_name = 'page-detail.html'
class PostDetailView(DetailView):
model = Post
template_name = 'post-detail.html'
【问题讨论】:
标签: django django-urls django-class-based-views