问题 APIView类和viewsets类之间的区别?


有什么区别 APIView 上课和 viewsets 上课? 我跟着 Django REST框架 官方文件。我认为它缺乏例子。

你能用一个合适的例子解释上述差异吗?


7733
2017-12-29 12:22


起源



答案:


APIView是您在定义REST视图时通常会覆盖的最基本的类。您通常会定义您的方法,如get,put,delete和其他检查(http://www.cdrf.co/3.5/rest_framework.views/APIView.html)。使用API​​View,您可以定义自己的 视图 并将其添加到您的网址中,如下所示:

#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,删除/发布/ 4,获取所有帖子,更新和创建新帖子都是如此常见,DRF提供了Viewsets。

但是在你了解Viewsets之前,我先告诉你,还有一些Generic Classes,他们做的事情非常好,但你需要提供完整的API端点,就像我对MyAPIView视图一样(同样需要更多信息检查) http://www.cdrf.co/ 要么 http://www.django-rest-framework.org/)。所以你必须定义自己的网址路径。

但是使用ViewSets可以创建 视图集 这实际上合并了所有上述操作,你也不需要定义url路径,你通常使用一个为你创建路径的路由器:

#views.py
 class PostViewSet(ViewSet): #here you subclass Viwset check methods you can          override, you have also ModelViewSet,...
 # urls.py 
 router = routers.DefaultRouter()
 router.register(r'post', PostViewSet, base_name='Post')

13
2017-12-29 13:41