Django - 'UserViewPermissionClass' 对象没有具有自定义权限的属性 'authenticate'

Django - 'UserViewPermissionClass' object has no attribute 'authenticate' with custom permissions

我正在尝试在基于 class 的视图中使用自定义权限。 当我尝试 运行 我的一个观点时,我得到一个 WrappedAttributeError :'UserViewPermissionClass' object has no attribute 'authenticate'

这是我的自定义权限:

class UserViewPermissionClass(BasePermission):
    def has_permission(self, request, view):
        if request.method == 'GET':
            return request.user.is_admin
        elif request.method == 'POST':
            return True
        # default logic

class UserView(APIView):
    authentication_classes = ( UserViewPermissionClass,)  

这是我正在尝试的基于 class 的视图 运行 :

class HandleUsers(UserView):

    def get(self, request):
        """Only for admin"""
        try:
            users = User.objects.all()
        except User.DoesNotExist():
            return HttpResponse(status=404)
        serializer = UserSerializer(users, many=True)
        return Response(serializer.data)

    def post(self, request):
        """For everyone"""
        serializer = RegistrationSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data)
        return Response(serializer.error)

这是我对休息框架的设置:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.TokenAuthentication',
    ],
    'DEFAULT_PERMISSION_CLASSES': [
        'rest_framework.permissions.AllowAny',
    ],
}

经过一些研究,我发现我的错误可能是由于我的 DEFAULT_PERMISSION_CLASSES。但是我看不到什么可能会阻塞。

预先感谢您的帮助。

authentication_classes=(UserViewPermissionClass,)更改为permission_classes=(UserViewPermissionClass,)