Django提交编辑表单时NoReverseMatch错误求助
解决NoReverseMatch错误:编辑资料后重定向到个人资料页
错误原因
从错误信息可直接定位问题:show_profile_page路由规则要求传入<int:pk>参数,但你在get_success_url中调用reverse_lazy时未传递该参数,导致Django无法匹配到对应路由。
修复方案
修改EditProfile类中的get_success_url方法,传入当前编辑的Profile实例的pk值即可:
def get_success_url(self): # 获取当前编辑的Profile对象的主键 profile_pk = self.get_object().pk # 传入pk参数生成正确的重定向路由 return reverse_lazy('show_profile_page', kwargs={'pk': profile_pk})
补充说明
- 若你的项目中User与Profile是一对一关联的关系,也可通过当前登录用户直接获取Profile的pk,写法如下:
def get_success_url(self): return reverse_lazy('show_profile_page', kwargs={'pk': self.request.user.profile.pk}) - 你的
form_valid方法已正确绑定当前用户到Profile实例,test_func也完成了编辑权限验证,这两部分逻辑无需调整。
内容的提问来源于stack exchange,提问作者DJCave
相关产品推荐
相关产品推荐

