DRF框架序列化器全局校验获取不到参数?

view层代码如下:

class LoginView(APIView):
    """
    用户登陆
    """

    def post(self, request):
        try:
            # 获取手机号码
            mobile = request.data.get('mobile')
            # 查询用户是否存在
            user = UserProfile.objects.get(username=mobile)
        # 用户不存在
        except UserProfile.DoesNotExist:
            serializer_obj = LoginSerializer(data=request.data)
            # 校验数据
            if serializer_obj.is_valid():
                # 保存数据
                user = serializer_obj.save()
                return Response({'token': get_tokens(user)})

            return Response({'detail': '登陆失败'}, status=404)
        else:
            # 判断用户是否被封禁
            if not user.is_active:
                Response({'detail': '该用户已被封禁'}, status=404)
            return Response({'token': get_tokens(user)})

serializer代码

class LoginSerializer(serializers.Serializer):
    """
    登陆与注册
    """
    id = serializers.IntegerField(read_only=True)
    username = serializers.CharField(read_only=True)
    avatar = serializers.CharField(max_length=255, read_only=True)
    user_type = serializers.IntegerField(read_only=True)
    score = serializers.IntegerField(read_only=True)
    # 登陆类型
    login_type = serializers.IntegerField(min_value=1, max_value=1, required=True)
    # 请求code
    code = serializers.CharField(write_only=True, max_length=255, required=True)
    # 手机号码
    mobile = serializers.CharField(max_length=11, min_length=11, required=True)

    # 全局校验
    def validate(self, attrs):

        print(attrs['code'])
        print('校验数据', attrs)

        return attrs

全局校验达不到attr的值,程序也不报错

阅读 1.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题