包含Django应用的url.py导致404错误

10 投票
1 回答
8682 浏览
提问于 2025-04-15 23:10

我在我的项目的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 进行进一步处理。

撰写回答