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

Django REST Framework路由未在API列表显示且无法访问求助

解决思路

针对你遇到的DRF路由不显示、访问404问题,从以下几个方向排查:

  • ViewSet缺少核心动作方法
    你继承的ViewSet本身没有实现任何默认动作(如list、retrieve),DefaultRouter只会为包含有效动作的ViewSet生成路由。添加必要的动作方法即可:

    from rest_framework.response import Response
    
    class myapiViewSet(ViewSet):
        permission_classes = (MaintenanceCheck,)
        throttle_classes = [UserRateThrottle]
    
        def list(self, request):
            # 替换为你的业务逻辑
            return Response({"status": "ok"})
    

    如果是操作数据库模型,直接改用ModelViewSet(需配置queryset和serializer_class),它会自动生成CRUD相关路由。

  • 检查权限类MaintenanceCheck的实现
    若该权限类的has_permission方法返回False,或抛出异常,可能导致路由被拦截(表现为404而非403)。先临时将其替换为AllowAny测试:

    from rest_framework.permissions import AllowAny
    
    class myapiViewSet(ViewSet):
        permission_classes = (AllowAny,)
        throttle_classes = [UserRateThrottle]
        # ... 动作方法
    
  • 验证路由生成结果
    运行python manage.py show_urls(需先安装django-extensions),查看输出中是否存在/api/myapi/相关路由。如果没有,说明ViewSet不符合Router的生成规则。

  • 排查路由顺序冲突
    确保path('api/', include(router.urls))在urlpatterns中的位置优先于其他可能匹配/api/前缀的路由,避免Router的路由被提前匹配覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 03:32:37