我有一个ModelViewSet
,我希望只有经过身份验证的用户才能访问它,所以我添加了permission_classes = (permissions.IsAuthenticated)
,但是收到错误:
TypeError at /es/general/countries/
'type' object is not iterable
这是ViewSet
:
class CountryViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated)
queryset = models.Country.objects.all()
serializer_class = serializers.CountrySerializer
如果我删除IsAuthenticated
分配行,ViewSet可以正常工作,但是有了它,我就会收到错误。
我将非常感谢你的帮助。
答案 0 :(得分:1)
你缺少一个小逗号:
permission_classes = (IsAuthenticated,)
# This works
for a in permission_classes:
print("fine")
permission_classes_error = (IsAuthenticated)
#TypeError: 'type' object is not iterable
for b in permission_classes_error:
print("fine")
使用逗号,我们创建一个只有一个元素的新元组(可迭代类型)。如果没有它,我们会将IsAuthenticated
(类型为object
,因此无法迭代)分配给permission_classes
。
您的固定ViewSet
如下所示:
class CountryViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
queryset = models.Country.objects.all()
serializer_class = serializers.CountrySerializer