Django Rest Framework方法\“ GET \”不允许错误?

时间:2019-06-02 12:04:38

标签: django python-3.x django-rest-framework

我正在做一个CreateApiView类,该类内部的方法是错误:“ detail”:“不允许使用方法\” GET \“。”,

web

2 个答案:

答案 0 :(得分:1)

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

一个GET请求应该具有 no 副作用,这意味着这些实体保持不变(相同数量的实体和相同的值)。

一个CreateApiView [drf-doc]实现了:

  

(...)

     

提供 post 方法处理程序。

因此您只能对此视图发出POST请求,它不允许允许DELETE,GET,PATCH,PUT等请求。

例如,您可以使用requests库或curl -X POST ... [wiki]发出POST请求。

话虽如此,您的实现看起来更像是DestroyApiView [drf-doc]。该视图处理DELETE请求。

答案 1 :(得分:0)

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)