Сбой jwt.encode: «Объект типа« байты »не поддерживает сериализацию JSON» - PullRequest
0 голосов
/ 30 апреля 2018

Я пытаюсь вернуть токен моему пользователю после того, как он успешно вошел в систему, но постоянно появляется следующая ошибка:

TypeError: Object of type 'bytes' is not JSON serializable

Как я могу это исправить? Это мой код до сих пор:

   if user:
        selected_user = {
            'email': user.__dict__['email'],
            'password': user.__dict__['password'],
            'account_type': user.__dict__['account_type'],
            'token': ''
        }

        if bcrypt.checkpw(request.data['password'].encode('utf8'), selected_user['password'].encode('utf8')):
            payload = {
                'email': selected_user.email,
                'account_type': selected_user.account_type
            }
            selected_user['token'] = jwt.encode(payload, "SECRET_KEY")
            response_details = {
                'data': selected_user,
                'message': 'Login successful.',
                'code': '200',
                'status': HTTP_200_OK
            }
            return Response(response_details, status=response_details['status'])
        else:
            response_details = {
                'message': "Invalid password.",
                'code': "400",
                'status': HTTP_400_BAD_REQUEST
            }
            return Response(response_details, status=response_details['status'])
    else:
        response_details = {
            'message': "Invalid email and password combination.",
            'code': "400",
            'status': HTTP_400_BAD_REQUEST
        }
        return Response(response_details, status=response_details['status'])

1 Ответ

0 голосов
/ 30 апреля 2018

Попробуйте импортировать json, и по возвращении используйте json.dumps (response_details):

 return Response(json.dumps(response_details), status=response_details['status'])
...