web-dev-qa-db-ja.com

APIViewクラスとビューセットクラスの違いは?

APIViewクラスとviewsetsクラスの違いは何ですか? Django REST-framework 公式ドキュメントをフォローしています。例がないと思います。

適切な例で上記の違いを説明できますか。

18
user7139313

APIViewは、RESTビューを定義するときに通常オーバーライドする最も基本的なクラスです。通常、get、put、delete、その他のチェックなどのメソッドを定義します( http:// www。 cdrf.co/3.5/rest_framework.views/APIView.html )。APIViewを使用して、viewを定義し、次のような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の削除、すべての投稿の取得、新しい投稿の更新と作成が一般的であったため、DRFはビューセットを提供します。

しかし、まずビューセットを知る前に、それらが非常に優れていることを行うジェネリッククラスもありますが、MyAPIViewビューで行ったように完全なAPIエンドポイントを提供する必要があります(再度詳細を確認してください http://www.cdrf.co/ または http://www.Django-rest-framework.org/ )。したがって、独自のURLパスを定義する必要があります。

しかし、ViewSetsを使用すると、上記のすべての操作を実際にマージするviewsetを作成し、通常はパスを作成するルーターを使用する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')
26
alphiii