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

如何解决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处配置:

  1. 主项目urls.py调整为:
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('', include('landing.urls')), # 去掉landing应用的路由前缀
    path('admin/', admin.site.urls),
]
  1. 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处配置:

  1. 主项目urls.py保持原有配置即可
  2. 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"),
]
  1. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 22:36:04