Почему Django rest framework не сохраняет данные, а возвращает код 200 ok

Я успешно отправил пост-запрос на развернутый (в Heroku) Django rest API из react axios, но данные не сохраняются в моей базе данных. В качестве базы данных я использую MongoDB (Djongo). Позвольте мне показать вам код, который я использовал.

settings.py

serializers.py

class ExcelUploaderWithClient(serializers.Serializer):
    file = serializers.FileField()
    client = serializers.IntegerField()
    business_process = serializers.IntegerField()

views.py

class UploadBusinessImpactExcelBySuperUSer(APIView, ExcelHandlingView):

    permission_classes = (
        IsAuthenticated,
        permissions.IsCybermindAdmin,
    )

    def post(self, request):
        self.can_model_handle_ExcelHandlingView(models.BusinessImpact)

        serializer = serializers.ExcelUploaderWithClient(
            data=request.data)
        if serializer.is_valid():
            data = serializer.validated_data
            file = data.get("file")
            client = data.get("client")
            business_process_id = data.get("business_process")
            

            try:
                business_process = get_business_process_by_client(
                    client, business_process_id
                )
            except (
                models.BusinessProcess.DoesNotExist,
                accountModels.Client.DoesNotExist,
            ) as e:
                return Response(
                    "business process or client does not exist",
                    status=status.HTTP_404_NOT_FOUND,
                )

            if (
                file.content_type
                == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
            ):
                # self.delete_every_recore_on_that_model(models.BusinessImpact)
                self.delete_every_record_that_match_criteria(
                    models.BusinessImpact,
                    {"client": client, "business_process": business_process},
                )
                excel_file = pd.read_excel(file)
                data = pd.DataFrame(
                    excel_file,
                    columns=self.get_excel_fields(
                        models.BusinessImpact.excel_titles),
                )

                for _, row in data.iterrows():
                    self.create_model_object(
                        models.BusinessImpact,
                        row,
                        {"client": client, "business_process": business_process.id},
                    )

                return Response("Successfully Loaded data from excel.")

            else:
                return Response(
                    {"file": ["File type must be excel with .xlxs extension."]},
                    status=status.HTTP_400_BAD_REQUEST,
                )

        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Я использовал React Axios для пост-запроса и вот код

const handleUploadFile = (e) => {
    let myfile = file;

    let formData = new FormData();
    formData.append("file", myfile);
    formData.append("client", company_name);
    formData.append("business_process", business);
    http({
      url: "https://cyberminds-backend.herokuapp.com/api/business_process/upload-business-impact-excel-by-superuser",
      method: "POST",
      mode: "cors",
      data: formData,
      headers: { "Content-Type": "multipart/form-data" },
    }).then(
      (response) => {
        alert("File uploaded Sesscessfullyyyyy");
      },
      (err) => {
        console.log(err);
      }
    );
  };

Вот запрос из chrome dev tools.

Header Response

Как я могу сохранить данные поста в моей базе данных?

Спасибо

Причина, по которой вы загружаете файлы и не сохраняете их, заключается в том, что вы не установили staticfiles в настройках. Добавьте эти параметры в настройках под static url:

STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'staticfiles/static/')
]

и запуск python manage.py collectstatics на вашем сервере

Вернуться на верх