Python &引用;AccessToken.user“;必须是一个";“用户”;实例

Python &引用;AccessToken.user“;必须是一个";“用户”;实例,python,django,python-3.x,oauth,django-rest-framework,Python,Django,Python 3.x,Oauth,Django Rest Framework,我试图弄明白oAuth2基于令牌的身份验证已经3天了,但还没有用。我已经为用户身份验证编写了一个代码。然而,我得到了一个错误 ValueError位于/api/customer/login/无法分配“{'username': 'sanskars'}:“AccessToken.user”必须是“user”实例 这个问题的解决办法是什么?为什么会出现以下错误 视图.py class UserLoginAPI(APIView): permission_classes = [AllowAny]

我试图弄明白oAuth2基于令牌的身份验证已经3天了,但还没有用。我已经为用户身份验证编写了一个代码。然而,我得到了一个错误

ValueError位于/api/customer/login/无法分配“{'username': 'sanskars'}:“AccessToken.user”必须是“user”实例

这个问题的解决办法是什么?为什么会出现以下错误

视图.py

class UserLoginAPI(APIView):
    permission_classes = [AllowAny]
    serializer_class = UserLoginSerializer

    def post(self, request, *args, **kwargs):
        access_token = request.GET.get('access_token')
        data = request.data
        serializer = UserLoginSerializer(data=data)
        if serializer.is_valid(raise_exception=True):
            new_data = serializer.data
            if new_data:
                app = Application.objects.get(name="appname")
                try:
                    print('trying to fetch old token if exists')
                    old_token = AccessToken.objects.get(user=new_data, appliction=app)
                    print('old_token',old_token)
                except:
                    pass
                else:
                    old_token.delete()
                new_token = generate_token()
                print('new_token',new_token)
                AccessToken.objects.create(user=new_data, application=app, expires=datetime.now() + timedelta(days=365),token=new_token)
                print('aceess',AccessToken)
            return Response(new_data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
class UserLoginSerializer(ModelSerializer):
    username = CharField()
    # email = EmailField(label='Email Address')
    class Meta:
        model = User
        fields = [
            'username',
            'password',

        ]
        extra_kwargs = {"password":{"write_only": True} }
序列化程序.py

class UserLoginAPI(APIView):
    permission_classes = [AllowAny]
    serializer_class = UserLoginSerializer

    def post(self, request, *args, **kwargs):
        access_token = request.GET.get('access_token')
        data = request.data
        serializer = UserLoginSerializer(data=data)
        if serializer.is_valid(raise_exception=True):
            new_data = serializer.data
            if new_data:
                app = Application.objects.get(name="appname")
                try:
                    print('trying to fetch old token if exists')
                    old_token = AccessToken.objects.get(user=new_data, appliction=app)
                    print('old_token',old_token)
                except:
                    pass
                else:
                    old_token.delete()
                new_token = generate_token()
                print('new_token',new_token)
                AccessToken.objects.create(user=new_data, application=app, expires=datetime.now() + timedelta(days=365),token=new_token)
                print('aceess',AccessToken)
            return Response(new_data, status=status.HTTP_200_OK)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 
class UserLoginSerializer(ModelSerializer):
    username = CharField()
    # email = EmailField(label='Email Address')
    class Meta:
        model = User
        fields = [
            'username',
            'password',

        ]
        extra_kwargs = {"password":{"write_only": True} }

还有一个困惑是,注册用户时是否需要生成令牌?

我创建了一个user实例,方法是user=user.objects.get(username=new_data['username']),然后在AccessToken中传递该用户实例。成功了。我现在还得做什么?