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

Django 5.2.3中不同路径配置导致accounts/login无法映射的原因咨询

Django 5.2.3中不同路径配置导致accounts/login无法映射的原因咨询

我来给你掰扯清楚这里面的门道哈,核心问题出在Django的URL路由路径拼接逻辑上,咱们一步步拆解:

先看你第一种能正常工作的配置

项目根目录的urls.py里用了path('', include('users.urls')):

  • 项目级的这个空路径前缀,相当于把users.urls里的所有路径直接“挂”在网站根路径下
  • 你的users/urls.py里配了path("accounts/", include("django.contrib.auth.urls")),而django.contrib.auth.urls本身自带了login/这个子路径
  • 三者拼接起来就是:空前缀 + accounts/ + login/ = /accounts/login/,正好和你访问的URL完全匹配,所以能正常显示登录表单

再看第二种失效的配置

当你把项目级路径改成path('users/', include('users.urls'))时:

  • 项目级的前缀变成了users/,这时候users.urls里的所有路径都会自动拼在这个前缀后面
  • 拼接后的完整路径就变成了:users/ + accounts/ + login/ = /users/accounts/login/
  • 但你还是访问原来的/accounts/login/,这个路径和Django现在期望的路径完全不搭,自然就会抛出“路径不匹配”的错误

如果你想让path('users/', include('users.urls'))生效,有两种调整方式:

  • 方式一:调整访问的URL,改成访问http://127.0.0.1:8000/users/accounts/login/
  • 方式二:修改users/urls.py里的路径,把path("accounts/", ...)改成path("", include("django.contrib.auth.urls")),这样拼接后就是users/ + 空 + login/ = /users/login/,访问这个URL就能正常显示表单了

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 09:33:02