Django UpdateView提交后对象未保存且success_url未生效问题排查
问题原因
核心问题出在模板的表单配置错误,Django通用编辑视图(包括UpdateView)仅会处理POST类型的表单提交请求,你当前的表单未指定提交方法,浏览器默认用GET方式提交,所以只会重新加载表单页,不会触发保存和跳转逻辑。
修复方案
修改模板中的<form>标签,明确添加method="post"属性,也可以补充action属性指定提交地址避免路由匹配偏差:
<!-- 修改前 --> <form class="form-group"> <!-- 修改后 --> <form class="form-group" method="post" action="{% url 'gradebook:classupdate' object.pk %}">
额外排查点(修改后仍有问题可逐一核查)
- 检查
success_url对应的路由gradebook:classroom是否真实存在,避免跳转时出现无感知的404 - 如果修改的班级名称和当前用户下已有的其他班级名称重复,会触发模型里的联合唯一约束,你可以在模板中添加
{{ form.errors }}打印表单错误信息排查 - 确认当前登录用户是对应班级的关联
user,避免自定义权限逻辑拦截请求
内容的提问来源于stack exchange,提问作者Doug Smith
相关产品推荐
相关产品推荐

