如何在drf django

时间:2018-11-22 04:21:17

标签: django django-rest-framework

如何在Django drf中执行删除请求?如何传递请求的参数? 请提供解决方案。我在这个 drf-django-python 编程中非常新。

class DeleteView(APIView):
    def delete(self, request,format=None):
        id = request.POST['book_id']
        email = request.POST['email']
        book = models.Book.objects.filter(book_id=id)
        book_uploader = serializers.BookSerializer(book[0]).data['uploader']['email']
        logged_in = request.user
        print(log)
        if book_uploader == logged_in :

            books = models.BookUserRelationship.objects.filter(book= id, user__email=email)

            books.delete()
            return Response("Successfully removed", status=status.HTTP_204_NO_CONTENT)
        else :
            return Response("Not able to remove")

1 个答案:

答案 0 :(得分:0)

在注释中,您注意到参数将嵌入在url中,但是您试图从POST字典获取值。

如果您的网址类似于

  

/ books / id / email /

您应该使用 request.kwargs 字典,例如 request.kwargs.get('email')

但是如果您的网址是

  

/books/id/?email=someemail@google.com

id 将出现在 request.kwargs 中,而电子邮件将出现在 request.query_params

请注意,每个url变量都在 request.query_params 字典中。

重要

如果您具有没有命名组的ID url参数,则视图集将无法通过名称从 request.kwargs 中获取