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

Django项目中删除评论时动态success_url返回404问题排查

解决Django CommentDeleteView动态success_url导致的404错误

你的问题出在get_success_url方法里reverse_lazy的调用方式错误。直接把字典作为第二个参数传入时,它会被当成位置参数args处理,但你的ads:ad_detail路由应该依赖命名参数(比如path('ad/<int:ad>/', ...)格式),这就导致URL解析失败,触发404。

修正后的代码:

class CommentDeleteView(OwnerDeleteView):
    model = Comment
    template_name = "ads/comment_delete.html"

    def get_success_url(self):
        ad = self.object.ad
        # 通过kwargs参数传递命名路由变量
        return reverse_lazy('ads:ad_detail', kwargs={'ad': ad.id})

也可以简化成:

return reverse_lazy('ads:ad_detail', kwargs={'ad': self.object.ad.id})

关键说明:

  • reverse_lazy中,args用于传递位置参数(比如reverse_lazy('ads:ad_detail', args=(ad.id,)))
  • kwargs用于传递命名参数,对应你路由里定义的<int:ad>这类命名变量
  • 你之前的写法未指定kwargs,字典被误判为位置参数,生成的URL不符合路由规则,因此返回404。

内容的提问来源于stack exchange,提问作者Muhammad Raffey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:12:33