2015-07-04 85 views
1

我使用新的Django 1.8應用程序來學習Django。Django的url模式不匹配

我難倒就如何得到這個我簡單的URL由urls.py解決

我在另一個視圖創建的網址:

<a href="/photoview/{{photo.id}}/"}> 

我能順利通過此網址瀏覽器爲:

http://localhost:8000/photoview/300/

我期待這個網址可以通過urls.py表達式匹配:

url('r^photoview/(?P<id>\d+)/$', views.photoview), 

但這不起作用。我已經試過這種變化,但至今沒有工作過,如:

url('r^photoview/(?P<id>[0-9]+)/$', views.photoview), 

我得到了瀏覽器此消息時,它不匹配

Page not found (404) 
Request Method:  GET 
Request URL: http://localhost:8000/photoview/300/ 

Using the URLconf defined in asset.urls, Django tried these URL patterns, in this order: 

^admin/ 
^$ [name='index'] 
^time/$ 
^about/$ 
^accounts/$ 
^photos/$ 
^tags/$ 
^users/$ 
r^photoview/(?P<id>\d+)/$ 
^static\/photos\/(?P<path>.*)$ 

The current URL, photoview/300/, didn't match any of these. 

欣賞得到這個工作的任何幫助。

回答

3

你有url('r^photoview/(?P<id>\d+)/$', views.photoview), 你想url(r'^photoview/(?P<id>\d+)/$', views.photoview),

(注意r是字符串,而不是第一個字符的前面)

docs.djangoproject.com/en/1.8/topics/http/urls指出,

的 'R'在每個正則表達式字符串的前面是可選的,但推薦使用 。它告訴Python的字符串是「原始」 - 在 沒有什麼應當將字符串逃過

還要注意的是,你應該在你的網址定義(例如PhotoView中)使用一個友好的名稱,然後使用{%URL「 photoview'photo.id%},而不是硬編碼URL模式。

+0

啊,完全錯過了。謝謝。 – curtisp

+1

'{%url'photoview'photo.id%}' - 不要忘記名稱周圍的引號。 – knbk