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

Django中使用RedirectView重定向时如何跳过URL中的pk参数

解决RedirectView重定向时的NoReverseMatch错误

错误原因

你的DailyRecordDeleteView继承自RedirectView,默认会把当前URL中的kwargs(比如pk=7)传递给reverse函数去解析目标URLbusiness:daily_records。但daily_records对应的URL路径是不带pk参数的,所以反向解析时找不到匹配的路由,抛出NoReverseMatch错误。

修复方案

修改DailyRecordDeleteView的get_redirect_url方法,先完成删除逻辑,再手动生成不带参数的列表页URL:

class DailyRecordDeleteView(RequiredBasicDetailsMixin, RedirectView):
    def get_redirect_url(self, *args, **kwargs):
        # 1. 获取并删除目标记录
        DailyRecord.objects.filter(pk=kwargs['pk']).delete()
        # 2. 返回列表页URL,不传递任何参数
        return reverse('business:daily_records')

补充说明

  • 用filter而非get是为了避免记录不存在时抛出异常,如果你确认请求的pk一定对应存在的记录,也可以用DailyRecord.objects.get(pk=kwargs['pk']).delete()。
  • 不需要再设置pattern_name,因为我们直接返回了生成好的URL。

验证修改

修改后点击删除按钮,系统会先删除对应pk的DailyRecord记录,然后成功重定向到不带pk参数的列表页/business/daily-records/。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:35:25