You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django访问/hello出现404错误,请求排查问题原因

解决Django访问/hello出现404的问题

看起来你遇到的是典型的URL匹配问题,我们一步步来排查和解决:

核心问题分析

从你给出的错误信息来看,Django只尝试匹配了admin/这个路径,说明你的/hello请求没有匹配到项目urls.py里的任何规则。结合你描述的配置,最可能的问题出在URL路径的斜杠匹配或者项目urls.py的配置细节上。

具体排查步骤

1. 确认项目根urls.py的配置是否正确

首先检查lecture3/urls.py的代码,正确的写法应该是这样的:

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 重点:这里是'hello/',开头不要加斜杠,末尾保留斜杠
    path('hello/', include('hello.urls')),
]

⚠️ 常见错误:如果这里写成了path('/hello/', include('hello.urls'))(开头多了斜杠),或者path('hello', include('hello.urls'))(末尾没加斜杠),都会导致匹配失败。

2. 检查hello应用的urls.py配置

你的hello应用urls.py应该是这样的(空路径对应index视图):

from django.urls import path
from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

这个配置是没问题的,它会匹配/hello/路径下的根请求。

3. 尝试正确的访问URL

你现在访问的是http://127.0.0.1:8000/hello,试试改成**http://127.0.0.1:8000/hello/(加上末尾的斜杠)**,如果能正常显示"Hello World!",那问题就找到了:

Django默认开启了APPEND_SLASH=True(在settings.py里),这个配置会自动将不带尾斜杠的请求重定向到带尾斜杠的版本,但如果你的项目中间件里缺少django.middleware.common.CommonMiddleware(负责处理这个重定向),就不会自动跳转。检查settings.py的MIDDLEWARE配置,确保包含这一行:

MIDDLEWARE = [
    # ...其他中间件
    'django.middleware.common.CommonMiddleware',
    # ...其他中间件
]

4. 可选:支持不带斜杠的访问

如果你希望用户访问/hello也能正常打开页面,可以修改项目urls.py的路径,把hello/改成hello(去掉末尾斜杠):

path('hello', include('hello.urls')),

不过更推荐遵循Django的URL设计规范,保留尾斜杠,让框架自动处理重定向,这样更符合RESTful的URL设计习惯。

总结

最可能的原因是:

  • 你访问的URL缺少末尾斜杠,且重定向机制未生效
  • 项目urls.py的路径配置有误(开头多斜杠或末尾无斜杠)

按照上面的步骤排查,应该能快速解决问题。

内容的提问来源于stack exchange,提问作者ankit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 10:32:59