如何制作两个结构相同的网址?
我不想在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而不匹配第二个。
答案 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