包含 Django 应用程序的 url.py 会导致 404
Posted
技术标签:
【中文标题】包含 Django 应用程序的 url.py 会导致 404【英文标题】:Including a Django app's url.py is resulting in a 404 【发布时间】:2011-02-24 00:57:29 【问题描述】:我在 mysite 项目的 urls.py 中有以下代码。
/mysite/urls.py
from django.conf.urls.defaults import *
urlpatterns = patterns('',
(r'^gallery/$', include('mysite.gallery.urls')),
)
当我尝试访问在 gallery/urls.py 中设置的 url 时,这会导致 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】:从主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 docs了解更多信息
请注意,此示例中的正则表达式没有
$
(字符串结尾匹配字符),但包含尾部斜杠。每当 Django 遇到include()
时,它都会切断与该点匹配的 URL 的任何部分,并将剩余的字符串发送到包含的 URLconf 以进行进一步处理。
【讨论】:
以上是关于包含 Django 应用程序的 url.py 会导致 404的主要内容,如果未能解决你的问题,请参考以下文章