Django中UpdateView未跳转到类视图定义的success_url问题求助
解决Django UpdateView提交后跳转异常的问题
兄弟,看你给出的代码片段,我一眼就注意到get_success_url里的参数写法有问题!这大概率就是跳转异常的根源,咱们一步步排查:
最可能的问题:reverse_lazy参数拼写错误
你代码里写的kwarg...应该是kwargs(少了个s),正确的写法得是这样:
def get_success_url(self): return reverse_lazy('project_detail', kwargs={'pk': self.object.pk})
要是参数名写错,reverse_lazy找不到对应的URL参数,要么直接报错,要么就会跳转到默认的地址(比如列表页或者返回上一页),完全不是你预期的详情页。
其他排查点:
- URL名称必须完全匹配:确认
project.urls.py里的name='project_detail'和reverse_lazy里的名称一模一样,大小写、拼写都不能错,Django对这个可是认死理的。 - 确认
self.object的主键正确:UpdateView里的self.object是更新后的实例,要确保它的pk存在。如果你的Project模型主键不是pk(比如自定义了id字段),记得改成对应的字段名,比如self.object.id。 - 别在
form_valid里搞砸跳转逻辑:如果你重写了form_valid方法,一定要调用父类的方法,比如:def form_valid(self, form): # 这里写你的自定义逻辑,比如保存额外字段 self.object = form.save() # 必须加这句,不然默认的跳转逻辑会失效 return super().form_valid(form) - 检查路由冲突:看看你的
urlpatterns里有没有其他路由抢在project_update前面匹配了edit/<int:pk>的格式,导致请求被错误路由,间接影响了跳转。
先把get_success_url的代码补全,修正kwargs的拼写错误,测试一下应该就能解决问题了!
内容的提问来源于stack exchange,提问作者Reinier Hernández
相关产品推荐
相关产品推荐

