我正在使用新的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.
感谢任何有助于此工作的帮助。
答案 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%},而不是对网址格式进行硬编码。