python - Django Rest API - 无法发出 PUT 或 DELETE 请求
问题描述
我有一个 django Rest API,想通过 Flutter 或 Postman 发出一个 put 请求。最终发生的事情是,当我发出 put 请求时,它会返回一个响应(看起来它已更改,打印出来),但实际上它从未真正更改过。这是我的代码!
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)
解决方案
问题是您覆盖了两个put
和delete
方法,并且在它们内部什么都不做。尝试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})
推荐阅读
- javascript - 如何在节点 js 中使用多个文件中的变量?
- r - 我如何遍历列表,为列表中的每个项目设置一个变量并运行源文件
- excel - 如何将多个工作簿中的数据复制、转置和合并到原始活动工作簿中?
- c - 多线程:生产者-消费者问题中的忙等待
- python - 我如何有效地使用 reduce() 来优化我的运行时?
- python - NoReverseMatch at /products/ Reverse for 'product-update' with arguments '('',)' 未找到。尝试了 1 种模式:['products/(?P
[0-9]+)/编辑/$'] - kotlin - Kotlin Linting RuleSetProvider '尾随逗号'
- java - 如何避免 java.io.IOException:服务器返回 HTTP 响应代码:504 以编程方式获取 URL
- python - 如何将对象名称(在列表中)打印为字符串,如果它们还不是字符串?
- haskell - 哈姆雷特 html 未注册或
tags correctly for my home route handler</h1> <div id="body"><p>For some reason the <code><head></code> tag for the home of my website is not being processed the way I would like. Here is the sourc