调用身份验证时,Django Rest Framework Nonetype对象没有属性用户

问题描述

我正在使用以下自定义ObtainAuthTokenView:

class ObtainAuthTokenView(APIView):
    throttle_classes = ()
    permission_classes = ()
    parser_classes = (
        parsers.FormParser,parsers.MultiPartParser,parsers.JSONParser,)

    renderer_classes = (renderers.JSONRenderer,)

    def post(self,request):
        serializer = serializers.AuthCustomTokenSerializer(data=request.data)
        serializer.is_valid(raise_exception=True)
        user = serializer.validated_data['user']
        token,created = Token.objects.get_or_create(user=user)

        content = {
            'token': unicode(token.key),}

        return Response(content)

序列化器类

from rest_framework.authentication import authenticate

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

    def validate(self,attrs):

        email_or_username = attrs.get('username')
        password = attrs.get('password')

        if email_or_username and password:
            # Check if user sent email
            user_request = get_object_or_404(
                User,email=email_or_username,)

            email_or_username = user_request.username
            user = authenticate(username=email_or_username,password=password)
            if user:
                if not user.is_active:
                    msg = _('User account is disabled.')
                    raise exceptions.ValidationError(msg)
            else:
                msg = _('Unable to log in with provided credentials.')
                raise exceptions.ValidationError(msg)
        else:
            msg = _('Must include "email or username" and "password"')
            raise exceptions.ValidationError(msg)

        attrs['user'] = user
        return attrs

调用序列化程序中的authenticate函数时,它将显示以下错误

nonetype”对象没有属性用户

在这里停留了一段时间 任何帮助将不胜感激

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)