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

求助:Django URL配置失效,访问返回404错误

排查Django URL 404错误的关键点

先看你提供的代码,我发现几个核心问题,咱们一步步梳理解决:

1. 主URL配置未完成

你的主urls.py里path('forum/', include(...这一行没写完,必须明确指定要包含的应用URL模块,正确写法应该是:

path('forum/', include('forums.urls'))

如果这一步没补全,Django根本不知道把/forum/开头的请求转发给forums应用的URL配置,必然会返回404。

2. 混用URL配置语法导致匹配失败

你的forums/urls.py里混用了旧版正则式URL配置(url())和新版路径转换器语法(<int:id>),这两种语法不能混搭:

  • 如果你坚持用旧版url()函数,需要用正则分组来捕获参数,匹配topics/123/这类路径的写法应该是:

    url(r'^topics/(?P<id>\d+)/$', views.topics, name='topics'),
    

    这里(?P<id>\d+)是正则命名分组,用于捕获数字类型的id参数。

  • 更推荐和主URL配置保持一致,改用新版path()函数(Django 2.0+官方推荐),修改forums/urls.py如下:

    from django.urls import path  # 替换原来的url导入
    from . import views
    
    urlpatterns = [
        path('', views.forums, name='forums'),
        path('topics/<int:id>/', views.topics, name='topics'),
    ]
    

    这样就能正常使用<int:id>这种简洁的路径转换器语法了。

3. 根路径匹配顺序的潜在风险

你的主urls.py里有多个空路径的include:

path('', include('announcements.urls')),
path('', include('account.urls')),

Django会按URL配置的顺序依次匹配请求,如果announcements.urls里有匹配根路径的规则,会优先触发匹配。虽然这暂时不影响forum/路径,但如果后续你的forums应用涉及根路径逻辑,需要注意调整配置顺序。

验证方法

修改完成后,你可以运行以下命令查看Django解析后的所有URL规则,确认forums相关URL是否正常注册:

python manage.py show_urls

如果是旧版Django(无show_urls命令),可以安装django-extensions第三方包后再执行该命令。

内容的提问来源于stack exchange,提问作者camnooten

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:49:49