Django Rest API-无法发出PUT或DELETE请求

时间:2019-07-18 17:05:29

标签: python django django-rest-framework request django-views

我有一个django Rest API,想通过Flutter或Postman发出放置请求。最终发生的事情是,当我发出放置请求时,它返回一个响应(看起来好像已更改,已打印出),但实际上它从未真正更改过。这是我的代码!

class UserProfileView(viewsets.ModelViewSet):
queryset = UserProfile.objects.all()
serializer_class = UserProfileSerializer

class AssignmentView(viewsets.ModelViewSet):
queryset = Assignment.objects.all()
serializer_class = AssignmentSerializer

filter_backends = (
    django_filters.rest_framework.DjangoFilterBackend,
    rest_framework.filters.OrderingFilter, 
)
filter_fields = ['studyplan']

class UserAssignmentView(AssignmentView):
http_method_names = ['get', 'post', 'put', 'delete']
def get_queryset(self):
    return Assignment.objects.filter(canview__user=self.request.user)

def put(self, request, format=None):
    return Response({'received data': request.data})

def delete(self, request, format=None):
    return Response({'received data': request.data})


class StudyplanView(viewsets.ModelViewSet):
queryset = Studyplan.objects.all()
serializer_class = StudyplanSerializer

class UserStudyplanView(StudyplanView):
def get_queryset(self):
    return Studyplan.objects.filter(canview__user=self.request.user)

1 个答案:

答案 0 :(得分:0)

问题是您同时覆盖了putdelete方法,而在它们内部什么也不做。尝试在其中调用super()方法:

class UserAssignmentView(AssignmentView):
    http_method_names = ['get', 'post', 'put', 'delete']
    def get_queryset(self):
        return Assignment.objects.filter(canview__user=self.request.user)

    def put(self, request, format=None):
        super().partial_update(request, format)
        return Response({'received data': request.data})

    def delete(self, request, format=None):
        super().destroy(request, format)
        return Response({'received data': request.data})