Django APIView类和viewsets类之间的区别?

Django APIView类和viewsets类之间的区别?,django,django-views,django-rest-framework,Django,Django Views,Django Rest Framework,APIView类和viewsets类之间有什么区别? 我遵循官方文件。我认为它缺乏例子 你能用一个合适的例子来解释上述区别吗 APIView是定义REST视图时通常覆盖的最基本类。通常定义get、put、delete和others check()等方法。使用APIView,您可以定义视图,并将其添加到URL中,如下所示: # in views.py class MyAPIView(APIView): ... #here you put your logic check methods

APIView类和viewsets类之间有什么区别? 我遵循官方文件。我认为它缺乏例子


你能用一个合适的例子来解释上述区别吗

APIView是定义REST视图时通常覆盖的最基本类。通常定义get、put、delete和others check()等方法。使用APIView,您可以定义视图,并将其添加到URL中,如下所示:

# in views.py
class MyAPIView(APIView):
     ... #here you put your logic check methods you can use
#in urls.py
url(r'^posts$', MyAPIView.as_view()), #List of all the posts
因为像获取/post/4、删除/post/4、获取所有post、更新和创建新post这样的事情非常常见,所以DRF提供了视图集

但首先,在您了解ViewSet之前,让我告诉您还有一些泛型类,它们做得非常好,但是您需要提供完整的API端点,就像我在MyAPIView视图中所做的那样(再次了解更多信息或检查)。因此,您必须定义自己的URL路径

但是,使用ViewSet,您可以创建ViewSet,它实际上合并了上述所有操作,而且您不需要定义url路径。您通常使用路由器为您创建以下路径:

 # views.py
 class PostViewSet(ViewSet):  # here you subclass Viewset check methods you can override, you have also ModelViewSet,...


 # urls.py 
 router = routers.DefaultRouter()
 router.register(r'post', PostViewSet, base_name='Post')

添加到APIView的函数与添加到ViewSet类的函数不同

  • APIView:为要在端点上支持的特定HTTP方法添加函数。例如:获取、发布、放置、修补、删除

  • ViewSet:您可以添加表示在典型API上执行的操作的函数。例如:列表、创建、检索、更新


视图集和APIView都允许我们为端点编写逻辑,但视图集不定义映射到HTTP方法的函数,而是映射到常见的API对象操作

APIView允许我们定义与标准HTTP方法匹配的函数,如GET、POST、PUT、PATCH等

Viewsets允许我们定义与常见API对象操作相匹配的函数,如:列表、创建、检索、更新等


视图集还用于编写逻辑以执行标准数据库操作并与数据库后端接口。和通常用于现有数据库模型来管理预定义对象。

对其进行了漂亮的总结。下面是一个很好的答案这是否回答了您的问题?