Django修改用户密码页面跳转异常问题排查
问题排查与解决
核心问题1:URL未命名导致无法正确反向解析
你的members/urls.py中,修改密码的URL路由没有设置name属性,无法通过Django的URL反向机制生成正确路径:
# 错误写法 path("password/", auth_views.PasswordChangeView.as_view()), # 修正为(添加name参数) path("password/", auth_views.PasswordChangeView.as_view(), name="password_change"),
核心问题2:模板表单action路径错误
跳转链接中的8是当前用户的ID,说明你模板里的表单action属性错误地使用了用户ID拼接路径(比如{{ user.id }}/password/),而非Django的反向解析语法。正确写法:
<form method="post" action="{% url 'members:password_change' %}"> {% csrf_token %} <!-- 表单字段 --> </form>
额外优化:配置密码修改成功后的跳转
PasswordChangeView默认要求指定success_url,否则会触发错误,建议补充配置:
from django.urls import reverse_lazy path("password/", auth_views.PasswordChangeView.as_view( success_url=reverse_lazy("members:panel") # 跳转到个人资料面板 ), name="password_change"),
验证操作
- 重启Django开发服务器
- 刷新页面后点击修改密码按钮,确认跳转路径为
http://127.0.0.1:8000/accounts/password/
内容的提问来源于stack exchange,提问作者Nimo Db
相关产品推荐
相关产品推荐

