Django3.1.1访问根路径返回404,admin和hello路径正常问题求助
问题原因
你当前的主URL配置(lecture3/urls.py)只注册了admin/和hello/两个前缀的路由规则,没有给根路径/配置对应的处理逻辑,所以访问根路径时Django找不到匹配的路由,自然返回404错误。
你提到删掉path('hello/', include("hello.urls"))后根路径可以正常访问,属于操作误差、服务未重启或缓存导致的异常现象,正常逻辑下删除这行后根路径依然会返回404,因为根路径始终没有对应的路由配置。
解决方案
如果需要根路径http://127.0.0.1:8000/也能正常访问,可根据需求选择以下两种方案:
方案1:保留/hello前缀,同时给根路径单独配置路由
修改lecture3/urls.py的urlpatterns,新增根路径的路由规则:
from django.contrib import admin from django.urls import path, include from hello.views import index # 导入hello应用的index视图 urlpatterns = [ path('admin/', admin.site.urls), path('hello/', include("hello.urls")), path('', index, name="root_index"), # 新增根路径路由 ]
修改后/和/hello两个路径都能正常返回Hello, world!内容。
方案2:将hello应用的路由直接挂载到根路径
如果不需要/hello前缀,希望hello应用的所有路由都直接在根路径下生效,修改主路由的include配置即可:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include("hello.urls")), # 把hello应用的路由挂载到根路径 ]
修改后访问http://127.0.0.1:8000/就会直接匹配到hello应用下的空路径规则,返回对应内容,原/hello路径会变为404。
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

