包含 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的主要内容,如果未能解决你的问题,请参考以下文章

Django URL路由分发系统

django url.py使用

Django之视图(views.py)

如何理解 django url.py 中的 Url 模式

Python:从入门到实践 Django 18.3 创建网页

刷新 django 中的 urls.py 缓存