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

Django REST API报错:'type' object is not iterable 求助

问题排查与解决方案

错误原因分析

从错误回溯可以定位到问题核心:DRF在初始化认证器时,self.authentication_classes是单个类对象(type)而非可迭代的列表/元组,导致列表推导式迭代时触发'type' object is not iterable错误。

具体修复步骤

1. 修正全局DRF认证配置

打开项目根目录的settings.py,找到REST_FRAMEWORK配置块,确保DEFAULT_AUTHENTICATION_CLASSES为列表格式:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.SessionAuthentication',
        'rest_framework.authentication.BasicAuthentication',
        # 按需添加其他认证类
    ],
    # 其他DRF配置项
}

如果之前配置时遗漏了外层的[],会导致认证类变成单个对象而非可迭代集合,直接引发该错误。

2. 优化视图代码(可选但推荐)

你手动实现的get_object方法可以用RetrieveAPIView的内置逻辑替代,简化代码同时避免手动处理异常:
修改api/views.py:

class FeedbackView(generics.RetrieveAPIView):
    permission_classes = [AllowAny]
    serializer_class = api_serializer.FeedbackSerializer
    # 指定查询集
    queryset = api_models.Feedback.objects.all()
    # 绑定URL中的参数名
    lookup_url_kwarg = 'feedback_id'

3. 验证修复效果

重启Django开发服务器后,再次访问/api/v1/feedback/1/,即可正常返回对应ID的反馈数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:08:08