Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DRF Delete API Method Get Error instead of delete

I'm trying to delete a Classroom object from the database. When I try to go to Django Rest Web Browser to fetch api/classroom/delete/1/ I get this response.

HTTP 405 Method Not Allowed
Allow: DELETE, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "detail": "Method \"GET\" not allowed."
}
class ClassroomDeleteViewAPI(generics.DestroyAPIView):
    serializer_class = ClassroomSerializer
    permission_classes = [IsAuthenticated]
    
    def get_queryset(self):
        return Classroom.objects.filter(teacher_assigned=self.request.user)
    
    def delete(self, request, pk):
        try:
            classroom = Classroom.objects.get(pk=pk)
            classroom.delete()
            return Response(status=status.HTTP_204_NO_CONTENT)
        except Classroom.DoesNotExist:
            return Response({
                'detail': 'Classroom not found'
            }, status=status.HTTP_404_NOT_FOUND)

I don't know what happened here. There is no url route merging.

The View is correctly processing a delete request.

Why is that happening?

My path for delete looks like this:

path('classroom/delete/<int:pk>/', ClassroomDeleteViewAPI.as_view(), name='delete_classroom')
like image 354
Emmanuel Rusiana Avatar asked May 29 '26 05:05

Emmanuel Rusiana


1 Answers

I think when opening the DRF web browser it always use get.

When I try to use curl -H some-token -X DELETE ``http://127.0.0.1:8000/api/classroom/delete/1/ it will actually delete

like image 177
Emmanuel Rusiana Avatar answered May 31 '26 18:05

Emmanuel Rusiana



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!