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

Django密码修改路径匹配失败,需配置带用户ID的URL路径

解决Django密码修改路径不匹配问题

问题根源

系统重定向时会跳转到带用户ID的路径(比如1/password/),但当前signup/urls.py里的密码修改路由仅配置了password/,未包含用户ID参数,同时主URL规则也没有匹配这类带ID的路径,导致出现URL未匹配的报错。

修复步骤

1. 更新signup/urls.py的路由配置

修改signup/urls.py,为密码修改路由添加用户ID参数,并完善视图的模板和成功跳转配置:

from django.urls import path
from .views import UserSignup, ProfileEdit
from django.contrib.auth import views as auth_views
from django.urls import reverse_lazy

urlpatterns = [
    path('register/', UserSignup.as_view(), name='register'),
    path('edit_profile/', ProfileEdit.as_view(), name='edit_profile'),
    # 新增带用户ID的密码修改路由,指定模板和成功跳转地址
    path('<int:pk>/password/', auth_views.PasswordChangeView.as_view(
        template_name='registration/change_password.html',
        success_url=reverse_lazy('home')
    ), name='change_password'),
]

提示:请确保registration/change_password.html模板已创建,或者替换为你项目中实际使用的密码修改模板路径。

2. 修正密码修改入口的链接/表单路径

确保模板中触发密码修改的链接或表单action使用反向解析生成正确URL,避免直接硬编码路径:

<a href="{% url 'change_password' user.id %}">修改密码</a>

这样生成的路径会是/signup/[用户ID]/password/(前提是主URLconf已正确挂载signup路由),不会出现无前缀的[用户ID]/password/路径。

3. 确认主URLconf的signup路由挂载

检查项目主urls.py(carreview.urls),确保已正确包含signup的路由:

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('signup/', include('signup.urls')),  # 这一行必须存在
]

验证

重启Django服务后,访问signup/[你的用户ID]/password/,应该能正常加载密码修改表单,提交后会自动跳转到首页。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:31:23