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

Django评论提交后跳转至对应帖子页面的实现求助

解决Django评论提交后跳转至对应帖子详情页的问题

你只需修改AddReviewView中的跳转配置,替换为动态获取目标地址的方法即可,具体操作如下:

修改views.py中的AddReviewView类

删除原有的success_url = reverse_lazy('blog-home'),添加get_success_url方法:

class AddReviewView(CreateView):
    model = Review
    form_class = ReviewForm
    template_name = 'blog/add_review.html'
    
    def form_valid(self, form):
        form.instance.post_id = self.kwargs['pk']
        return super().form_valid(form)
    
    def get_success_url(self):
        # 通过刚创建的评论实例关联到对应帖子,调用其已定义的详情页地址方法
        return self.object.post.get_absolute_url()

原理说明

  • 静态的success_url无法动态获取当前评论所属的帖子ID,而get_success_url方法会在评论实例保存完成后执行,此时可通过self.object访问到刚创建的Review对象。
  • 借助Review模型与Post的外键关联self.object.post,直接调用Post模型中已定义的get_absolute_url方法,即可得到对应帖子的详情页地址。

可选实现方式

若不想依赖Post的get_absolute_url,也可直接通过reverse生成URL:

def get_success_url(self):
    from django.urls import reverse
    return reverse('post-detail', kwargs={'pk': self.object.post.pk})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:54:10