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

Django Rest Framework中pytest reverse获取ViewSet Action路径失败求助

解决DRF中ModelViewSet自定义detail=False Action的reverse路径问题

你遇到的问题是对DRF Router生成的Action URL名称规则理解有误,调整名称格式即可解决:

错误原因

你之前用reverse("api:death_spec:death_spec2:case-list")采用冒号分隔的层级结构,但DRF中,Router注册的ViewSet自定义Action的URL名称格式为{basename}-{action_name}:

  • basename是注册Router时指定的death_spec2
  • action_name是@action装饰器中定义的case-list

因此该Action的完整URL名称是death_spec2-case-list,结合你的app_name和上层namespace,需要把名称中的冒号替换为连字符。

正确的reverse写法

假设项目上层存在api namespace,正确写法如下:

reverse("api:death_spec:death_spec2-case-list", kwargs={'transformation_id': 70})

如果没有上层api namespace,则直接使用:

reverse("death_spec:death_spec2-case-list", kwargs={'transformation_id': 70})

验证方法

可以通过django-extensions的show_urls命令确认Action对应的URL名称:

  1. 安装依赖:pip install django-extensions
  2. 在settings.py的INSTALLED_APPS中添加'django_extensions'
  3. 运行命令:python manage.py show_urls

在输出结果中找到对应Action的行,查看Name列的值,确保reverse使用的名称与之一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 04:42:48