Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Rest框架方法\“;获取\";不允许的错误?_Django_Python 3.x_Django Rest Framework - Fatal编程技术网

Django Rest框架方法\“;获取\";不允许的错误?

Django Rest框架方法\“;获取\";不允许的错误?,django,python-3.x,django-rest-framework,Django,Python 3.x,Django Rest Framework,我在做一个CreateApiView类,这个方法在类中,错误是:“detail”:“method\”GET\“not allowed.” 简言之:由于您更改了实体(您似乎在这里删除了一个实体),因此您确实无法通过GET请求触发视图 GET请求应该没有副作用,因此这意味着实体保持不变(相同数量的实体和相同的值) 因此,A实施: (……) 提供一个post方法处理程序 因此,您只能对此视图发出POST请求,它不允许删除、获取、修补、放置等请求 例如,您可以使用库或使用发出POST请求 话虽如此,您的

我在做一个CreateApiView类,这个方法在类中,错误是:“detail”:“method\”GET\“not allowed.”


简言之:由于您更改了实体(您似乎在这里删除了一个实体),因此您确实无法通过GET请求触发视图

GET请求应该没有副作用,因此这意味着实体保持不变(相同数量的实体和相同的值)

因此,A实施:

(……)

提供一个
post
方法处理程序

因此,您只能对此视图发出POST请求,它不允许删除、获取、修补、放置等请求

例如,您可以使用库或使用发出POST请求


话虽如此,您的实现看起来更像一个。此视图处理删除请求。

A
CreateApiView
仅实现POST请求:因为GET无论如何都不应该有副作用。@TomasAdel:那么它就是一个
ListAPIView
(用于对象列表)或
RetrieveAPIView
(用于单个对象的详细信息)。查看APIViews列表:我知道,但我希望wake http status=200,它是405now@TomasAdel:如前所述,对于
CreateView
,确实不允许使用GET方法,因为GET应该没有副作用。您需要执行POST请求(405表示您使用了错误的方法)。@TomasAdel:您可以用您实现的视图以及如何触发视图来编辑您的问题吗?class RetractBidAPIView(ListCreateAPIView):permission_classes=(permissions.IsAuthenticated,)serializer_class=RetractBidSerializer queryset=“”
class RetractBidAPIView(APIView)

permission_classes = (permissions.IsAuthenticated,)

def get(self, request, *args, **kwargs):
    auction = get_object_or_404(Auction, pk=self.kwargs.get(pk)
    date_now = datetime.now(timezone.utc)
    serializer = RetractBidSerializer(data=request.data,
                                  context={"request": request})

    serializer.is_valid(raise_exception=True)
    serializer.save(buyer=request.user, auction=auction)

    bid = get_object_or_404(Bid, pk=current_bid.pk)
    bid.delete()
    return Response(serializer.data, {"detail": "You bid is retracted"}, 
                 status=status.HTTP_200_OK)
class RetractBidAPIView(APIView)

permission_classes = (permissions.IsAuthenticated,)

def get(self, request, *args, **kwargs):
    auction = get_object_or_404(Auction, pk=self.kwargs.get(pk)
    date_now = datetime.now(timezone.utc)
    serializer = RetractBidSerializer(data=request.data,
                                  context={"request": request})

    serializer.is_valid(raise_exception=True)
    serializer.save(buyer=request.user, auction=auction)

    bid = get_object_or_404(Bid, pk=current_bid.pk)
    bid.delete()
    return Response(serializer.data, {"detail": "You bid is retracted"}, 
                 status=status.HTTP_200_OK)