在CBV中处理短网址的正确方法是什么?
简而言之,我的意思是从site/page/pk/
重定向到site/page/pk/slug/
。
目前我正在使用单独的重定向视图:
class PageRedirectView(RedirectView):
pattern_name = 'display_page'
def get_redirect_url(self, *args, **kwargs):
page = get_object_or_404(Page, pk=kwargs['pk'], is_live=True)
kwargs['slug'] = page.slug
return super(PageRedirectView, self).get_redirect_url(*args, **kwargs)
其中display_page是urls.py中的名称:
url(r'^(?P<pk>[0-9]*)/(?P<slug>.*)/$', views.display_page, name='display_page'),
但我不确定这是正确的方法。 DetailView中是否有特殊方法用于此类重定向?