您好我想将/{category}/{sub_category}
等网址重定向到/{category}/
,但RedirectView希望使用子类别和类别关键字参数解析网址
url(r'^/(?P<category_slug>[^\/]+)/$', CategoryView.as_view(), name='category'),
url(r'^/(?P<category_slug>[^\/]+)/(?P<another_parameter>[^\/]+)$',
RedirectView.as_view(pattern_name='category')),
所以这不起作用,我认为默认应该忽略不需要的参数..
我正在django.urls.exceptions.NoReverseMatch:
使这项工作的最佳选择是什么?
答案 0 :(得分:1)
当你使用pattern_name
时,Django将尝试使用与传入视图相同的args和kwargs进行反转。这不适合您,因为您想要重定向到只需category
的{{1}}视图。
您可以继承category_slug
并覆盖RedirectView
。
get_success_url
然后在您的网址中使用from django.urls import reverse
class CategoryRedirectView(RedirectView):
def get_redirect_url(self):
return reverse('category', args=(self.kwargs['category'],))
而不是CategoryRedirectView
。
RedirectView
请注意,我已删除了前导斜杠。您只需要使用url(r'^(?P<category_slug>[^\/]+)/(?P<another_parameter>[^\/]+)$',
CategoryRedirectView.as_view()),
而不使用尾部斜杠。你肯定不需要根网址中的前导斜杠。