Django UpdateView更新后跳转原帖子报NoReverseMatch错误如何解决
问题解决方法
错误原因
你遇到的NoReverseMatch错误核心是路径参数匹配不全:
- 你要跳转的目标路由
build-log-view、以及当前update路由本身,都要求同时传入pk(帖子ID)和pkz(日志ID)两个路径参数 - 你当前的
get_success_url方法仅传入了pkz,缺失了必填的pk参数,导致反向解析URL失败
修复步骤
- 修正
get_success_url方法,从请求参数中同时取出两个参数传入reverse:
def get_success_url(self): # 从当前请求的路径参数中同时取出帖子ID和日志ID post_pk = self.kwargs["pk"] log_pk = self.kwargs["pkz"] return reverse("build-log-view", kwargs={"pk": post_pk, "pkz": log_pk})
- 同步修正视图类的模板属性名:Django通用视图指定模板的属性是
template_name,而非template,否则后续会触发模板找不到错误:
# 原代码 template = 'blog/buildlog_update.html' # 修改为 template_name = 'blog/buildlog_update.html'
- 如果你的表单模板中手动指定了
action属性,生成build-log-update路由时也需要同时传入pk和pkz两个参数,避免提交表单前就触发匹配错误。
内容的提问来源于stack exchange,提问作者Wazy
相关产品推荐
相关产品推荐

