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

Django应用URL访问返回404错误,请求排查路由配置问题

Django路由404问题解决

你的404错误源于错误混用了path()和正则表达式语法,Django中path()是精确路径匹配,不支持^这类正则符号,只有re_path()(或url(),是re_path的别名)才支持正则写法。以下是具体修正方案:

1. 修正主项目 demo/urls.py

针对子应用的路由配置,有两种修正方式:

方案一(推荐,用path简洁写法)

from django.contrib import admin
from django.urls import path, include
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),  # 建议统一加结尾斜杠,符合Django规范
    path('contact/', views.contact, name='contact'),    
    path('user/', include('user.urls')),  # 去掉正则符号^,直接写普通路径
]

方案二(用re_path支持正则)

from django.contrib import admin
from django.urls import path, include, re_path  # 导入re_path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.home, name='home'),
    path('about/', views.about, name='about'),
    path('contact/', views.contact, name='contact'),    
    re_path(r'^user/', include('user.urls')),  # 用re_path替代path来支持正则
]

2. 修正子应用 user/urls.py

同样去掉正则符号,用path的精确匹配写法:

from django.urls import path
from . import views

urlpatterns = [
    path('login/', views.login, name='login'),  # 去掉^/,直接写login/,建议加结尾斜杠
]

问题根源说明

原来的写法中,path(r'^user/')会把^user/当作普通字符串路径,只有访问http://127.0.0.1:8000/^user/才会匹配;子应用里的path(r'^/login')同理,会匹配/^/login这种不存在的路径,所以访问/user/login时自然返回404。

修正后,访问http://127.0.0.1:8000/user/login/(或根据你是否保留结尾斜杠调整)即可正常匹配路由。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:45:37