似乎无法通过数字获得django url路线

时间:2011-11-07 02:05:26

标签: python regex django django-urls

我正在尝试获得这样的网址结构。

http://example.com/blog/1/title-name-goes-here

我的主要网址文件包含此行。

url(r'^blog/', include('blog.urls')),

在我的blog.urls中我有

urlpatterns = patterns('',
    (r'', 'blog.views.index'),
    (r'^(?P<entry_id>\d+)/(?P<slug>[a-zA-Z0-9_.-]+)/$', 'blog.views.entry'),
)

我的问题是当我访问/blog/1/some-title时,我调用了索引视图,而不是条目视图方法。路线的顺序也无关紧要。

我认为正则表达式是错误的。我仍然不善于他们。

1 个答案:

答案 0 :(得分:1)

尝试:

urlpatterns = patterns('',
    (r'^(?P<entry_id>\d+)/(?P<slug>[-\w]+)/$', 'blog.views.entry'),
    (r'^$', 'blog.views.index'),
)    

请注意下方图案中的克拉和美元符号表示空图案。您应该(通常)按照需要匹配的组数量的顺序放置您的模式,例如/ id / slug / title / above / id / slug / above / id /,因为URLconf选择了第一个匹配项。您可以使用RegexPal在线测试您的模式,这很方便

我还使用\ w(单词,数字下划线将slug更改为更简单的slug模式 - 我不确定你是否特别想要在slugs中匹配点?)