我会在使用APIView和使用ModelViewSet时遇到差异,当我想要序列化我的模型时,获取他们的对象/记录列表?
例如,在APIView documentation中,我们使用ListUser类及其get方法,我们可以获取用户列表
class UserViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = User.objects.all().order_by('-date_joined')
serializer_class = UserSerializer
filter_fields = ('username', 'is_player', 'first_name', 'last_name', 'team' , 'email', )
我使用这种方式使用ModelViewSet获得了相同的用户列表:
NancyModule
如何确定何时使用APIView或ModelViewSet执行此任务?
答案 0 :(得分:1)
问题太开放了,虽然我会尝试回答它。
首先,APIView
或ViewSet
与ModelViewSet
,GenericAPIView
,ListAPIView
(和co)相关联。
* View和* ViewSet之间的主要区别在于* ViewSet用于处理路由器并提供单个类来公开资源,而* View将需要两个(一个用于列表/创建,另一个用于详细信息/更新/删除)。
请注意,APIView
是最低级别,只会绑定到HTTP谓词(get / post / put ...),而ViewSet
或GenericAPIView
会有CRUD,例如列表/更新......
为了展示Django的模型,您需要
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
或
class UserListCreateView(ListCreateAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
class UserRetrieveUpdateDestroyView(RetrieveUpdateDestroyAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer