404 错误请求反应 axios

404 bad request react axios

当我在 React 中发出 post 请求时,我似乎无法弄清楚错误 error 404 not found。这是我发出 post 请求的反应代码。我在后端使用 Django restframork 并在前端使用 axios,我遇到 post 请求错误。这是我使用的代码的详细信息。

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: 'http://127.0.0.1:8000/api/business_process/upload-business-impact-excel-by-superuser',

      method: 'POST',
      mode: 'cors',
      data: formData,
    }).then(
      (response) => {
        alert('File uploaded Sesscessfully');
      },
      (err) => {
        console.log(err);
      }
    );
  };

Django views.py 用于发出 api 请求的视图

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-IsClientAdminofficedocument.spreadsheetml.sheet"
        ):
            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)

business_process/urls.py

urlpatterns = [
    path(
        "upload-business-impact-excel-by-superuser",
        views.UploadBusinessImpactExcelBySuperUSer.as_view(),
    ),
]

urls.py 主要网址代码

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api/business_process/", include("business_process.urls")),
]

admin.site.site_header = settings.ADMIN_SITE_HEADER

这里是请求响应 network request response

我该如何解决这个问题?

我在 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)