在Django中启用缓慢的URL

时间:2009-10-25 12:20:22

标签: django url slug

我正在尝试在SO使用的形式的Django中启用缓慢的URL:example.com/id/slug。 我没有启用slugs的问题,并且目前设置了以下形式的URL:http://127.0.0.1:8000/articles/id/(例如/ articles / 1 /)并且工作正常。相应的URL模式是:

(r'^(?P<object_id>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

如果我将网址格式更改为:

(r'^(?P<slug>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

然后,当我导航到http://127.0.0.1:8000/articles/another-article/时,我收到以下错误:

  

当前网址,文章/其他文章/与其中任何一个都不匹配。

但是,如果我尝试:

http://127.0.0.1:8000/articles/1/

我收到错误:

  

找不到与查询匹配的文章

最终我希望能够通过以下方式导航到aricle:

  

http://127.0.0.1:8000/articles/1/   要么   http://127.0.0.1:8000/articles/1/another-article/

1 个答案:

答案 0 :(得分:25)

在问这个问题之前,我应该多一点耐心,因为我想出了答案:

(r'^(?P<object_id>\d+)/$',  'django.views.generic.list_detail.object_detail', info_dict),
(r'^(?P<object_id>\d+)/(?P<slug>[-\w]+)/$',  'django.views.generic.list_detail.object_detail', info_dict),

第一种模式允许使用/ articles / 1 /形式的URL,这意味着第二个urlpattern(包括slug)是可选的。