You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django中使用get_absolute_url()表单跳转报NoReverseMatch错误求助

解决Django中get_absolute_url的NoReverseMatch错误

你的问题根源在两个细节上:

1. 未使用应用命名空间

你的urls.py里设置了app_name = 'my_blog',这意味着所有URL名称都归属这个命名空间,调用reverse时必须带上命名空间前缀,否则Django无法匹配到对应的视图。

2. reverse的参数格式错误

reverse的args参数要求传入元组,你当前写的(str(self.id))只是单个字符串,不是元组,必须在末尾添加逗号才能被识别为元组。另外,你的详情页URL定义的是<int:pk>参数,直接使用self.pk更贴合逻辑,无需转成字符串。

修改models.py中的get_absolute_url方法

将原方法替换为以下任意一种写法即可:

# 推荐用kwargs,可读性更强
def get_absolute_url(self):
    return reverse('my_blog:post-detail', kwargs={'pk': self.pk})

或者:

# 修正args的元组格式
def get_absolute_url(self):
    return reverse('my_blog:post-detail', args=(self.pk,))

补充说明

CreateView会自动调用模型的get_absolute_url方法完成跳转,修改后用户提交表单就能正常跳转到新创建文章的详情页。

内容的提问来源于stack exchange,提问作者Alireza Boostaneh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 11:15:36