2011-07-13 26 views
1

我有以下网址Django的URL正则表达式的问题

url(r'^(?P<name>[A-Za-z0-9-]+)/$', 'user', name='user') 

此相匹配的URL的像/tom-2/tom-brandy-monster,我想喜欢/tom//tom-max/而不是网址。

基本上我想捕捉连字符,字母和数字的组合。

UPDATE

这是我的urls.py

urlpatterns = patterns('', 
    url(r'^$', 'homepage.views.home', name='home'), 
    url(r'^user/', include('users.urls')), 
    url(r'^plans/', include('plans.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
) 

这是我的用户/ urls.py

urlpatterns = patterns(
    'users.views', 
    url(r'^(?P<user>[A-Za-z0-9-]+)/$', 'user', name='user'), 
) 

UPDATE2

故障在我的vi EWS。这个正则表达式适用于所有上述示例。

+0

看起来应该是这样。我建议仔细观​​察在此之前发生的模式,看看它们是否在请求到达此模式之前阻止了请求。 –

+0

@彼得:你是对的;看到我的答案。 –

+0

这就是'users.urls.py'?我希望你的意思是'users/urls.py'? –

回答

4

你有什么匹配你指定的所有这些(见下文)。你应该检查以确保(a)你没有一个URL模式匹配更早和(b)这个被包括在内(一个常见的罪魁祸首是初始化后使用urlpatterns = ...而不是urlpatterns += ...)。

>>> import re 
>>> urlpattern = re.compile(r'^(?P<name>[A-Za-z0-9-]+)/$') 
>>> urlpattern.match('tom/').group('name') 
'tom' 
>>> urlpattern.match('tom-max/').group('name') 
'tom-max' 
>>> urlpattern.match('tom-2/').group('name') 
'tom-2' 
>>> urlpattern.match('tom-brandy-monster/').group('name') 
'tom-brandy-monster' 
+0

嗨克里斯摩根,可以哟看看我的URL,看看有什么可能是错的?谢谢! – super9

+0

对不起,我在视图> _ <中调用了错误的列 – super9