根据发送的一些数据,使用哪个请求从数据库中获取数据?

时间:2017-03-25 17:46:17

标签: api django-views django-rest-framework django-generic-views

我正在使用django-rest-framework的genericAPIViews

我想从前端向后端发送一些数据,并根据发送的数据,Django应查询模型并将一些数据返回到前端。发送的数据是受保护的数据,因此无法附加到URL中,因此无法使用GET请求。我没有操纵数据库,只是查询它并返回响应(典型的GET用例)。

现在在DRF的genericAPIViews中,我无法找到执行此操作的视图:

Tom Christie's GitHub page可以看出,只有2个视图有一个帖子处理程序:

  1. CreateAPIView 返回self.create()
  2. ListCreateAPIView 返回self.create()
  3. 可以看出,这两个视图都有post方法,可以在数据库中创建我不想要的条目。是否有内置的类可以完成我的工作,还是应该使用generics.GenericAPIView并编写自己的帖子处理程序?

    目前我使用的是generic.View,它有帖子(self,request,* args,** kwargs)

1 个答案:

答案 0 :(得分:0)

我认为你有几个选择可供选择。一种方法是使用ModelViewSet,它非常有用,因为它可以很好地处理视图,序列化器和模型之间的通信。 Here是django-rest-framework ModelViewSet文档的链接。

这些是它默认提供的操作(因为它继承自GenericAPIView):

.list(), .retrieve(), .create(), .update(), .partial_update(), .destroy().

如果您不想要所有这些,您可以通过执行以下操作来指定您想要的方法:

class ModelViewSet(views.ModelViewSet):
    queryset = App.objects.all()
    serializer_class = AppSerializer
    http_method_names = ['get', 'post', 'head']

注意: http_method_names似乎是从Django> = 1.8开始的

来源: Disable a method in a ViewSet, django-rest-framework