Django url模式不匹配

时间:2015-07-04 00:38:12

标签: regex django python-2.7

我正在使用新的Django 1.8应用来学习Django。

我很难过如何通过urls.py来解决这个简单的网址

我在另一个视图中创建了url:

<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.

感谢任何有助于此工作的帮助。

1 个答案:

答案 0 :(得分: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%},而不是对网址格式进行硬编码。