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

Heroku部署DRF项目请求player赛事查询接口返回500服务器错误求助

500错误排查结果

错误产生原因

  • 权限配置错误:一是属性名不符合DRF规范,DRF类视图的权限配置属性为permission_classes,你定义的permissions属性无法被框架识别;二是值的格式错误,(IsAuthenticated)是单个类对象,不是框架要求的元组/列表类型,解析时会抛出类型错误。
  • 路由配置错误:Django的path方法需要传入可调用的视图对象,你直接传入类视图views.MatchesView,没有调用as_view()方法将类转为可调用实例,触发运行时错误。
  • 参数类型不匹配风险:路由中捕获的player参数是字符串类型,如果Matches模型的player字段为外键或整数字段,直接用字符串值过滤会触发字段类型不匹配错误。

修复方案

  1. 修正视图的权限配置
class MatchesView(generics.ListAPIView): 
    serializer_class = MatchesSerializer    
    # 改为正确的属性名,同时用带逗号的元组格式,或者用列表格式避免漏写逗号
    permission_classes = (IsAuthenticated,)        
    def get_queryset(self):    
        # 将字符串参数转为整数匹配字段类型
        player = int(self.kwargs['player'])            
        return Matches.objects.filter(player=player).all() 
  1. 修正路由配置,补充as_view()调用
app_name = 'api'
urlpatterns = [    
    path('',include(router.urls)),
    path('player=<str:player>/matches',views.MatchesView.as_view())  
]    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 02:57:02