两个具有相同结构的URL

时间:2016-12-09 20:23:57

标签: python django django-urls

如何制作两个结构相同的网址? 我不想在URL之前添加任何前缀。我希望所有观看次数为example.com/[slug]

以下是我的网址:

url(r'^(?P<slug>[-_\w]+)', views.CategoryArticlesView.as_view(), name='single_category'),
url(r'^(?P<slug>[-_\w]+)', views.SingleArticleView.as_view(), name='single_article'),

我可以通过在第一个网址之前添加前缀来轻松实现:

url(r'^**category/**(?P<slug>[-_\w]+)', views.CategoryArticlesView.as_view(), name='single_category'),

但我希望它没有前缀。 现在它只匹配第一个URL而不匹配第二个。

2 个答案:

答案 0 :(得分:3)

你无法做到你想要的那样。相反,您可以添加另一个视图,您可以根据以下条件调度您的请求:

def some_view(request):
    if some_condition:
        return CategoryArticlesView.as_view()(self.request)
    else:
        return SingleArticleView.as_view()(self.request)

现在,您的网址配置可以是:

url(r'^(?P<slug>[-_\w]+)', views.some_view, name='some_name'),

答案 1 :(得分:2)

您无法按顺序创建两个具有相同模式汽车的网址Django按顺序运行每个网址模式,并在第一个匹配请求的网址的网站停止。见how-django-processes-a-request