如何解决Django访问根路径时空路径未匹配URL的404错误
问题根因分析
- 第一点:你未为根路径
/配置任何路由映射,所以直接访问http://127.0.0.1:8000/必然触发404错误 - 第二点:现有路由配置存在前缀重复嵌套问题,和你预期的访问路径不匹配:主项目
urls.py中已经给landing应用的路由加了login/前缀,同时landing应用内部的urls.py又给登录视图加了login/前缀,最终实际可访问的登录页路径是http://127.0.0.1:8000/login/login/,不符合常规使用预期 - 额外小问题:你贴出的landing应用
urls.py代码缺少urlpatterns的闭合中括号,还导入了没用的admin模块,建议顺便清理
解决方案
根据你想要的访问效果二选一即可:
场景1:根路径/直接展示登录页
修改2处配置:
- 主项目
urls.py调整为:
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('', include('landing.urls')), # 去掉landing应用的路由前缀 path('admin/', admin.site.urls), ]
- landing应用
urls.py调整为:
from django.urls import path from. import views urlpatterns = [ path('', views.loginpage, name="login"), # 空路径对应根路径访问 ]
修改后重启服务,直接访问http://127.0.0.1:8000/即可看到登录页。
场景2:访问/login路径展示登录页,根路径自动跳转登录页
修改3处配置:
- 主项目
urls.py保持原有配置即可 - landing应用
urls.py调整为:
from django.urls import path from. import views urlpatterns = [ path('', views.loginpage, name="login"), # 去掉内部的login前缀 path('root/', views.root_redirect, name="root_redirect"), ]
- landing应用
views.py新增跳转逻辑:
from django.shortcuts import redirect # 原有代码保持不变 def root_redirect(request): return redirect('login')
修改后重启服务,访问http://127.0.0.1:8000/login/可直接打开登录页,访问根路径会自动跳转到登录页。
内容的提问来源于stack exchange,提问作者ajay
相关产品推荐
相关产品推荐

