У меня есть этот API. Он возвращает данные заголовка Excel, и я хочу выгрузить данные Pandas в JSON, но он показывает ошибку "
Код API:
@api_view(['POST', ])
def bulkUploadPolicyMember(request):
data = json.loads(request.data['data'])
data = decode_data(data)
data["uploaded_by"] = request.user.uid
data['status'] = 0
data['uploaded_date'] = datetime.datetime.now()
data['sheet'] = data['sheet'] if 'sheet' in data and data['sheet'] != '' else None
data['docket_id'] = data['docket_id'] if data['docket_id'] != '' else None
if data['docket_id'] is None:
return CustomeResponse(request=request, comment=DOCKET_REQUIRED, data=json.dumps({}, cls=UUIDEncoder),status=status.HTTP_400_BAD_REQUEST,validate_errors=1, message=DOCKET_REQUIRED)
try:
doc_obj = InwardDocument.objects.values('insurer_id').get(uid=data['docket_id'])
except InwardDocument.DoesNotExist:
return CustomeResponse(request=request, comment=DOCKET_REQUIRED, data=json.dumps({}, cls=UUIDEncoder),status=status.HTTP_400_BAD_REQUEST,validate_errors=1, message=DOCKET_REQUIRED)
policy_file_path = settings.BULK_POLICY_FILE_UPLOAD+'insurers/'+str(doc_obj['insurer_id'])
try:
if 'file' in request.FILES and request.FILES['file'] != "":
policy_file = request.FILES['file']
# check extension
if validateFileExtension(policy_file) is True:
if (getFileExtByFileName(policy_file) == 'xlsx' or getFileExtByFileName(policy_file) == 'xls') and data['sheet'] is None:
return CustomeResponse(request=request, comment=SHEET_NAME_CHECK, message=SHEET_NAME_CHECK, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST,validate_errors=1)
policy_file_name = file_save_by_source(request, policy_file_path, policy_file)
if policy_file_name != "":
data['file_name'] = policy_file_name
else:
return CustomeResponse(request=request, comment=COULD_NOT_UPLOAD_FILE, message=COULD_NOT_UPLOAD_FILE, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST,validate_errors=1)
try:
upload_path = settings.MEDIA_URL+policy_file_path+'/'+policy_file_name
try:
pd_data = pd.read_excel(upload_path).columns
except Exception as e:
print(e)
return CustomeResponse(request=request, comment=BULK_DATA_NOT_FOUND,message=BULK_DATA_NOT_FOUND, data=json.dumps({}, cls=UUIDEncoder),status=status.HTTP_400_BAD_REQUEST,validate_errors=1)
except Exception as e:
#print(e)
return CustomeResponse(request=request, log_data=json.dumps(str(e), cls=UUIDEncoder), message=SOMETHING_WENT_WRONG, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST, validate_errors=1)
else:
return CustomeResponse(request=request, comment=ALLOWED_POLICY_FILES, data=json.dumps({}, cls=UUIDEncoder),status=status.HTTP_400_BAD_REQUEST,validate_errors=1, message=ALLOWED_POLICY_FILES)
else:
print("->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>")
return CustomeResponse(request=request, comment=POLICY_FILE_REQUIRED, data=json.dumps({}, cls=UUIDEncoder),status=status.HTTP_400_BAD_REQUEST,validate_errors=1, message=POLICY_FILE_REQUIRED)
except KeyError:
return CustomeResponse(request=request, comment=KEY_MISSING, message=KEY_MISSING, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST,validate_errors=1)
else:
return CustomeResponse(request=request, comment=FILE_SUCCESSFULLY_UPLOADED,message=FILE_SUCCESSFULLY_UPLOADED , data=json.dumps(pd_data, cls=UUIDEncoder),status=status.HTTP_200_OK,validate_errors=1)
Вывод выглядит так:
Index(['PolicyName', 'Inclusion/Exclusion',
'InsuredContactNo', 'IssueoffContactNo', 'PinCodeInsured',
'PinCodeIssOffice', 'InsuredEmail', 'IssOfficeEmail', 'PDFLink',
'Duplicate'],
dtype='object')
Ошибка:
Object of type 'Index' is not JSON serializable