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

Django URL路由配置异常:访问路径需重复前缀才可生效,直接访问触发404错误

Django URL路由配置异常:访问路径需重复前缀才可生效,直接访问触发404错误

兄弟,你的问题根源出在主项目的URL路由配置逻辑混乱,咱们一步步拆解问题,再给你搞定的方案:

问题分析

你在bbsite/urls.py里把home/、about/、lee/等多个顶级路径都重复include了同一个app的urls.py,这会导致app里的所有路由规则被叠加挂载到这些顶级路径下。比如你原本想让localhost/home指向首页,但因为主urls里挂了home/前缀,同时app urls里的路由规则又叠加了一层路径(从Django给出的错误日志能看到home/ home/ [name='home']这个匹配规则),就会变成localhost/home/home才能匹配;直接访问localhost/home时,主前缀匹配后找不到对应的app路由,自然触发404。另外你还漏了导入admin模块,这也会导致admin/路径报错,咱们一起修正。

解决方案

1. 修正主项目的bbsite/urls.py

完全没必要重复include,只需要把app的路由挂载到根路径(或者你想要的统一前缀)就行:

from django.contrib import admin  # 补上你漏写的admin导入
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    # 只保留这一行,把app路由挂载到根路径,所有app的路由都会成为顶级路径
    path('', include('bulaboysdotcom.urls')),
]

2. 修正app的bulaboysdotcom/urls.py

现在app路由直接挂在根路径下,咱们把每个页面的路由定义成顶级路径:

from django.urls import path
from . import views

urlpatterns = [
    # 可选:让 localhost/ 和 localhost/home 都能访问首页
    path('', views.home, name="index"),  # 空路径对应 localhost/
    path('home/', views.home, name="home"),  # 对应 localhost/home
    # 其他页面直接定义顶级路径
    path('about/', views.about, name="about"),  # 对应 localhost/about
    path('lee/', views.lee, name="lee"),  # 对应 localhost/lee
    path('dede/', views.dede, name="dede"),  # 对应 localhost/dede
    path('contactus/', views.contact_us, name="call-us"),  # 对应 localhost/contactus
]

3. 验证效果

重启Django开发服务器,现在访问:

  • localhost/home → 正常打开首页
  • localhost/about → 正常打开关于页
  • 其他页面也能直接通过顶级路径访问,不会再出现404或者需要重复前缀的情况了

补充说明

如果之后你想给app加统一前缀(比如bulaboys/),只需要把主urls里的path('', include(...))改成path('bulaboys/', include(...)),这时候访问首页就变成localhost/bulaboys/home,灵活调整即可。

备注:内容来源于stack exchange,提问作者ule mangaa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 10:24:34