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
相关产品推荐
相关产品推荐

