1

我正在为我的 rest api 设置一个 Django knox-rest 框架。我正在使用 Postman 测试登录,执行请求后,我的 API 返回 500 错误以及堆栈转储。返回给 Postman 的转储向我显示以下错误:

AttributeError at /users/api/auth/login
'LoginSerializer' object has no attribute 'validated_data'

我的 api.py 文件中的一个片段:

class LoginAPI(generics.GenericAPIView):
    serializer_class = LoginSerializer
    permission_classes = ()

    def post(self, request, *args, **kwargs):
        serializer = self.get_serializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.valiated_data
        _, token = AuthToken.objects.create(user)
        return Response({
            "user": UserSerializer(user, context=self.get_serializer_context()).data,
            "token": token
        })

我的 serializers.py 文件中的片段:


class LoginSerializer(serializers.Serializer):
    username = serializers.CharField()
    password = serializers.CharField()

    def validate(self, data):
        user = authenticate(**data)
        if user and user.is_active:
            return user
        raise serializers.ValidationError("Incorrect Credentials")

服务器干净启动,除了 Post 请求和 500 错误之外,没有错误记录到控制台。我必须去邮递员查看带有上述错误的转储。

我已经尝试了几乎所有我能想到或发现尝试但没有弄明白的东西。所以任何帮助将不胜感激。

4

1 回答 1

0

token = AuthToken.objects.create(user)[1] 应该适用于您的情况。

于 2021-11-16T16:21:18.143 回答