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

Django Rest Framework使用permissions.IsAuthenticated报错求助

解决Django REST Framework中permission_classes的TypeError问题

这个错误的根源其实是个很容易忽略的Python语法细节——你定义permission_classes时,括号里少了一个关键的逗号!

在Python中,(permissions.IsAuthenticated)只是单个对象的括号包裹写法,并不是可迭代的元组。但DRF的permission_classes要求接收一个可迭代的权限类集合,所以才会抛出'type' object is not iterable的错误。

修复方案

只需要在权限类后面加个逗号,把它变成标准的元组格式:

class CountryViewSet(viewsets.ModelViewSet):
    permission_classes = (permissions.IsAuthenticated,)  # 这里添加了逗号
    queryset = models.Country.objects.all()
    serializer_class = serializers.CountrySerializer

如果你觉得元组的写法容易踩坑,也可以改用列表定义,可读性更强:

permission_classes = [permissions.IsAuthenticated]

验证效果

修改后,DRF就能正确识别权限配置,只有已认证用户才能访问这个ViewSet的接口,同时不会再抛出类型错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:32:52