2011-07-13 32 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