python - 两个具有相同结构的 URL

标签 python django django-urls

如何使两个具有相同结构的 URL 起作用? 我不想在 URL 之前添加任何前缀。我希望所有 View 均为 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 之前添加前缀来轻松使其工作,例如:

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

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

最佳答案

你不能那样做你想做的事。相反,您可以添加另一个 View ,您可以在其中根据某些条件分派(dispatch)请求,如下所示:

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'),

关于python - 两个具有相同结构的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41068303/

相关文章:

python - 使用基于状态的标签注释视频帧

Python、Tk 和 OptionMenu : how to sort a drop down list?

mysql - 当主数据库关闭时,如何在 Django 中切换到备份数据库?

python - 在 Django 的管理界面中发布表单

python - Django:如何传递变量以包含来自 url 标签的标签?

python - 如何使 junos_config Ansible 模块支持非 ASCII 字符?

python - Python 中的 Scraper 给出 "Access Denied"

django - 在我的 django 应用程序中导入 pymongo 时出错

django - 在 Django REST 应用程序中使用 ETag 进行乐观锁定

django - 我如何对 Django URL 进行单元测试?