2012-10-11 144 views
0

所以我有一個主urls.py,看起來像這樣:Django的網址正則表達式

urlpatterns = patterns('', 
(r'^users/(?P<username>.*)/', include('app.urls')), 
url(r'^users/(?P<username>.*)$',direct_to_template,{'template':'accounts/profile.html'}, name='profile'),) 

和app.urls.py

urlpatterns = patterns('',url(r'^app/create/$', create_city ,name='create_city'),) 

我的問題是,當我本地主機:8000/users/michael/app/create /它不會調用我的視圖。我試圖改變網址的順序,但沒有運氣,所以我相信我的問題是與正則表達式,但不知道要改變什麼,任何人?

回答

1

指定的組(?P<username>.*)將匹配任意字符,零次或多次。在您的用戶名中,包括正斜槓。

在url模式中,使用(?P<username>[-\w]+)會更常見。這將匹配小寫字母a-z,大寫字母A-Z,數字0-9連字符和下劃線組中的至少一個字符。

我還建議您爲profile視圖添加尾隨斜線到您的模式。

全部放在一起,我建議您使用以下作爲起點爲您urls.py

urlpatterns = patterns('', 
    url(r'^users/(?P<username>[-\w]+)/$',direct_to_template, {'template':'accounts/profile.html'}, name='profile'), 
    (r'^users/(?P<username>[-\w]+)/', include('app.urls')), 
) 
+0

我在那裏,我想你的形式給出,並沒有工作。當我把http:// localhost:8000/users/brian/ 改爲(r'^ users /(\ w +)/',include('app.urls'))時,作品。你知道爲什麼嗎? – psychok7

+0

我的個人資料url模式中有一個錯字。加號位於方括號之外。它現在應該工作。 – Alasdair

+0

它是如何工作的,感謝兄弟。順便說一下,你能解釋我之前發佈的解決方案的區別嗎?謝謝 – psychok7