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

Django ModelViewSet自定义@action路由访问返回404错误问题咨询

错误原因排查
  • @action装饰器的detail参数设置和访问URL不匹配:你当前设置的detail=False代表这是列表级动作,路由规则不会匹配路径中的实例ID(你URL里的UUID参数),路径结构为{根路由}/{动作名},不需要携带pk参数。你访问的两个URL都带了UUID参数,和路由规则完全不匹配,因此触发404。
  • 额外小问题:装饰器name参数里的Locaitons为拼写错误(正确为Locations),不影响路由匹配,仅影响接口显示名称,可按需修正。
解决方案

根据你的实际业务需求二选一即可:

情况1:接口不需要对应单个Vesting实例,无需传UUID

  1. 调整方法定义,删除不必要的pk参数:
@action(detail=False, methods=['GET'], name='Get Vesting Locations')
def get_vesting_locations(self, request, *args, **kwargs):
    # 此处编写业务逻辑
  1. 访问正确URL:http://localhost:8000/vesting/get_vesting_locations/

情况2:接口需要对应单个Vesting实例,必须传UUID参数

  1. 把@action的detail参数改为True,声明为实例级动作,路由会自动匹配{根路由}/{实例id}/{动作名}的结构:
@action(detail=True, methods=['GET'], name='Get Vesting Locations')
def get_vesting_locations(self, request, pk=None, *args, **kwargs):
    # 此处编写业务逻辑,可通过pk获取对应实例
  1. 访问URL:http://localhost:8000/vesting/617b8bd8-6fdd-43eb-948a-4b17d1a0a089/get_vesting_locations/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 08:30:01