DRF ViewSet自定义action用kwargs做反向URL查找失败是什么原因?
反向URL查找失败原因
你的路由规则中包含必填的命名路径参数version,但调用drf_reverse/reverse时没有在kwargs中传入该参数。
从报错给出的尝试匹配的2个路由规则可以看到,所有路径前缀都包含api/(?P<version>[^/]+)/,其中(?P<version>[^/]+)是强制要求的命名捕获组,必须传入对应参数才能完成路由匹配,你当前传入的kwargs只有client_id和uuid两个参数,缺少必填的version参数,因此触发NoReverseMatch异常。
修复方案
调用反向解析方法时补充传入version参数即可,示例代码如下:
# 将v1替换为你实际使用的API版本号 drf_reverse( 'rewards-query-earned-rewards', kwargs={ 'version': 'v1', 'client_id': instance.application.client_id, 'uuid': str(instance.uuid) } )
补充说明:路由规则末尾的
format参数是DRF自动生成的可选参数,不需要主动传入,不会影响匹配。
内容的提问来源于stack exchange,提问作者stephan
相关产品推荐
相关产品推荐

