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

Django DRF调用GET接口报'type' object is not iterable如何解决

问题根因

错误出自settings.py中DRF的权限配置存在Python语法问题:单元素包裹在圆括号中时,末尾不加逗号不会被识别为元组,只会被判定为单个元素对象。
你配置的DEFAULT_PERMISSION_CLASSES最终被解析为单个权限类(IsAuthenticated类本身,属于type类型),而非包含权限类的可迭代序列,DRF遍历权限类执行校验时无法迭代单个type对象,就抛出了对应报错。

修复方案

修改settings.py中的REST_FRAMEWORK配置,给DEFAULT_PERMISSION_CLASSES的单元素末尾添加逗号,使其被正确识别为元组:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication'
    ),
    'DEFAULT_PERMISSION_CLASSES': (
        'rest_framework.permissions.IsAuthenticated',  # 末尾添加逗号
    )
}

也可以直接用列表写法规避单元素元组的语法坑:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication'
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.IsAuthenticated'
    ]
}
验证

修改配置后重启服务,再次发起/polls/接口的GET请求即可正常返回结果,500错误消失。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:30:02