【问题标题】:Success message not showing after deleting the object in Django rest framework在Django rest框架中删除对象后不显示成功消息
【发布时间】:2021-08-14 11:01:05
【问题描述】:

我有一个 DestroyAPIView,我在其中使用 perform_delete 函数来删除一个实例。但是,我想发送一条状态为 200 的成功消息。我试过了,但是在邮递员中,我对 204 状态感到空白。我怎样才能做到这一点??

我的看法:

class UpdateOrderView(UpdateAPIView,DestroyAPIView):
    permission_classes = [AllowAny]
    #queryset = Order.objects.prefetch_related('order_items').all()
    #value = self.kwargs['pk']
    queryset = Order.objects.all()
    print(queryset)
    serializer_class = OrderUpdateSerializer

    def perform_destroy(self, instance):
        if instance.delete():
            return Response({
                "message":"Order deleted successfully"
            },
            status=status.HTTP_200_OK)
        else:
            pass

实例已删除,我检查了数据库,但没有收到成功消息。

【问题讨论】:

    标签: python django api django-rest-framework postman


    【解决方案1】:

    您可以改写destroy 方法。

    class UpdateOrderView(UpdateAPIView,DestroyAPIView):
        permission_classes = [AllowAny]
        queryset = Order.objects.all()
        serializer_class = OrderUpdateSerializer
    
        def destroy(self, request, *args, **kwargs):
            instance = self.get_object()
            self.perform_destroy(instance)
            return Response({
                "message":"Order deleted successfully"
            },
            status=status.HTTP_200_OK)
    
        def perform_destroy(self, instance):
            instance.delete()
    

    【讨论】:

    • 你好@Abdul,谢谢它的工作。所以只是最后一个问题。所以 perform_destory 只用于这种情况??我不确定何时使用destroy 以及何时使用perform_destroy。你能解释一下吗??
    • @Django-Rocks 我认为当您想要更改 API 响应(如本例中)时应该覆盖 destroy,并在您想要对实例删除进行更精细的检查时使用 perform_destroy。对于example
    • 感谢您的回答。我只是想知道你在 django 上工作了多少年才能获得如此多的知识和 5k+ 的声誉。我才刚刚开始,甚至还不到一年,10 个月。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-15
    • 1970-01-01
    • 2021-10-25
    • 2023-03-23
    • 2012-07-28
    • 2015-09-01
    相关资源
    最近更新 更多