我有以下观点:
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
。我看不到任何其他具有get
和post
功能的通用视图。
编辑
我已按要求添加了编辑内容,请尝试一下,但目前看来似乎没有必要,但稍后会添加更多功能。
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"),]
答案 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
的更多信息