web-dev-qa-db-fra.com

Différence entre la classe APIView et la classe des ensembles de vues?

Quelle est la différence entre la classe APIView et la classe viewsets ? Je suis Django REST-framework documentation officielle. Je pense qu'il manque d'exemples.

Pouvez-vous expliquer la différence ci-dessus avec un exemple approprié.

18
user7139313

APIView est la classe la plus basique que vous remplacez généralement lors de la définition de votre vue REST. Vous définissez généralement vos méthodes comme get, put, delete et autres check ( http: // www. cdrf.co/3.5/rest_framework.views/APIView.html ). Avec APIView vous définissez votre vue et vous l'ajoutez à vos URL comme donc:

#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

Parce que certaines choses comme obtenir le/post/4, supprimer/post/4, obtenir tous les messages, mettre à jour et créer un nouveau message étaient si courantes que DRF fournit des ensembles de vues.

Mais avant de connaître les ensembles de vues, permettez-moi de vous dire qu'il existe également des classes génériques qui font ces choses très bien, mais vous devez fournir un point de terminaison API complet comme je l'ai fait avec ma vue MyAPIView (encore une fois pour plus d'informations, vérifiez http://www.cdrf.co/ ou http://www.Django-rest-framework.org/ ). Vous devrez donc définir votre propre chemin d'accès aux URL.

Mais avec ViewSets, vous créez un ensemble de vues qui fusionne en fait toutes les opérations décrites ci-dessus et vous n'avez également pas besoin de définir le chemin de l'url, vous utilisez généralement un routeur qui crée des chemins pour vous aimez:

#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