Django使用DeleteView删除帖子后如何重定向回所属讨论页面
Django DeleteView 删除帖子后重定向到所属讨论页解决方案
删除视图中原有写死的success_url = '/'配置,重写get_success_url方法实现动态生成重定向地址即可,具体操作如下:
- 首先在视图文件头部导入路由反转方法:
from django.urls import reverse
- 修改DeletePost视图代码:
class DeletePost(DeleteView): model = Post def get_queryset(self): queryset = super().get_queryset() # 注意:原代码过滤字段存在笔误,已修正为post_author_id return queryset.filter(post_author_id=self.request.user.id) def get_success_url(self): # 从待删除的帖子对象中获取关联的讨论主键,生成对应讨论页路由 return reverse('view_discussion', kwargs={'pk': self.object.discussion.pk})
可选实现方式
你也可以直接从删除路由的参数中获取讨论ID,无需查询帖子关联字段,性能更优:
def get_success_url(self): # 路由中<int:id>对应的就是讨论主键 return reverse('view_discussion', kwargs={'pk': self.kwargs['id']})
内容的提问来源于stack exchange,提问作者Klebe
相关产品推荐
相关产品推荐

