当 URL 以 Slash 结尾时,Django path() 抛出 404

Posted

技术标签:

【中文标题】当 URL 以 Slash 结尾时,Django path() 抛出 404【英文标题】:Django path() throws 404 when URL ends in Slash 【发布时间】:2019-01-24 04:12:48 【问题描述】:

这里是 urls.py

path('about/', about, name='about'),

如果我访问 /about 会出现 404 错误,如果将其更改为 path('about', about, name='about'),那么如果我访问 /about 可以,但 /about/ 会出现 404 错误。

我在这里做错了什么,这在 Django 2.0 之前并没有发生

【问题讨论】:

如果您在升级后遇到此错误,则听起来像是 this question 的重复。 我没有升级到任何东西,我在问题中明确提到我正在使用 Django 2.0,这个问题对我没有多大帮助。 是的,我读到您正在使用 Django 2.0。当你说“这在 Django 2.0 之前没有发生”时,看起来你已经升级了 Django,但没有更新你的设置。如果/about 没有重定向到/about/,则表明您的MIDDLEWAREAPPEND_SLASH 设置存在问题。你可能会发现我在this answer 上的解释更有帮助。 【参考方案1】:

我会发表评论,但我还没有足够的声誉来发表评论。无论如何,以下可能会有所帮助:

您是否导入了您的视图?因为您引用 path() 错误。应该是这样的:

from . import views

urlpatterns = [

    path('about/', views.about, name='about'),

]

【讨论】:

我没有显示导入语句,因为问题是关于path,如果你想在这里知道我的导入from .views import about 你说你使用了两次/about。一次有效,另一次无效……你写错字了吗?另外,您说使用/about/ 会出错...您在哪里使用它?你的视图/模板是什么??

以上是关于当 URL 以 Slash 结尾时,Django path() 抛出 404的主要内容,如果未能解决你的问题,请参考以下文章

如何在模板中删除 django URL 中的尾随斜杠?

Django路由层

Codeigniter - 当 URL 以斜杠结尾时,相对 URL 停止工作?

Laravel 5:当 url 以“/”结尾时防止重定向 [重复]

django之路由

为啥浏览器 URL 不能以 .com 结尾?