如何从Django的书面视图中删除认沽权

时间:2019-03-21 22:18:57

标签: python django

我有以下观点:

class ReadClass(generics.RetrieveUpdateDestroyAPIView):
    queryset = MyCModel.objects.all()
    serializer_class = MySerializer
    def post(self, request, *args, **kwargs):
         ''' defined my post here'''

我知道retrieveupdatedestroyapi视图中没有帖子。而且我在此处和前端的视图中创建了自己的帖子,我看到了帖子和放置的内容!有什么方法可以删除看跌期权。

或者还有其他更好的方法,我尝试使用ListCreateApi view。问题在于,它为我提供了发布功能,同时列出了所有值,而我正在寻找特定的pk。我看不到任何其他具有getpost功能的通用视图。

编辑

我已按要求添加了编辑内容,请尝试一下,但目前看来似乎没有必要,但稍后会添加更多功能。

class ReadClass(generics.GenericAPIView, mixins.CreateModelMixin, mixins.RetrieveModelMixin):
    queryset = MyCModel.objects.all()
    serializer_class = MySerializer
    def post(self, request, *args, **kwargs):
        try:
            s1 = MySerializer.objects.get(mRID=kwargs["pk"])
            serializer = MySerializer(s1, data=request.data)
        except MySerializer.DoesNotExist:
            pass
        if serializer.is_valid():
            if flag == 0:
                pass
            else:
               serializer.update(s1,validated_data=request.data)
        else:
            return Response(serializer.errors)

urlpatterns = [path('temp/<int:pk>', ReadClass.as_view(), name = " reading"),]

1 个答案:

答案 0 :(得分:1)

DRF具有用于列表,创建,检索,更新和删除功能的混合模块。通用视图只是结合了这些mixin。您可以根据需要选择这些混合的任何子集。如果您只需要创建和检索功能,就可以这样编写视图:

class ReadClass(GenericAPIView, CreateModelMixin, RetrieveModelMixin):
    queryset = MyCModel.objects.all()
    serializer_class = MySerializer

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

这将为发布和获取请求提供默认功能。如果愿意,可以像在示例中一样覆盖post方法,以自定义post requset行为。

您可以了解有关Mixin和通用视图A Better MVC

的更多信息