包含Django应用的url.py导致404错误
我在我的项目的urls.py文件里有以下代码。
/mysite/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^gallery/$', include('mysite.gallery.urls')),
)
当我尝试访问gallery/urls.py中设置的某个网址时,结果却出现了404页面。
/mysite/gallery/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^gallery/browse/$', 'mysite.gallery.views.browse'),
(r'^gallery/photo/$', 'mysite.gallery.views.photo'),
)
404错误
Using the URLconf defined in mysite.urls, Django tried these URL patterns, in this order:
^gallery/$
The current URL, gallery/browse/, didn't match any of these.
另外,这个网站是托管在一个名为media temple (dv)的服务器上,并且使用了mod_wsgi。
1 个回答
17
在主文件 urls.py
的正则表达式中去掉 $
。
urlpatterns = patterns('',
(r'^gallery/', include('mysite.gallery.urls')),
)
在包含的 Urlconf 中不需要 gallery
。
urlpatterns = patterns('',
(r'^browse/$', 'mysite.gallery.views.browse'),
(r'^photo/$', 'mysite.gallery.views.photo'),
)
想了解更多信息,可以查看 django 文档。
注意,这个例子中的正则表达式没有
$
(表示字符串结束的符号),但有一个结尾的斜杠。每当 Django 遇到include()
时,它会把 URL 中到那一点匹配的部分去掉,然后把剩下的字符串发送到包含的 URLconf 进行进一步处理。