web-dev-qa-db-fra.com

Différence entre le mentalité et le génériqueViewset dans Django Cadre de repos

J'ai un Django Cadre de repos génériqueviewset pour lequel j'essaie de mettre en place une pagination comme suit:

#settings.py
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 
         'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 20
}

#views.py
class PolicyViewSet(viewsets.GenericViewSet):
    def list(self, request):
        queryset = Policy.objects.all()
        page = self.paginate_queryset(queryset)
        serializer = PolicySerializer(page, many=True)
        return self.get_paginated_response(serializer.data)

Cela fonctionne comme prévu.Cever, si j'essaie de faire la même chose avec juste une normale graphique comme suit:

#views.py
class PolicyViewSet(viewsets.ViewSet):
    def list(self, request):
        queryset = Policy.objects.all()
        page = self.paginate_queryset(queryset)
        serializer = PolicySerializer(page, many=True)
        return self.get_paginated_response(serializer.data)

Je reçois une erreur indiquant:

L'objet 'PolicyViewset' n'a aucun attribut 'paginate_Quiseryset'

Comment puis-je configurer la pagination avec un placement normal graphique. Quelle est la différence entre un génériqueviewset et une ciblée dans la DRF?

9
Amistad

il suffit d'hériter aussi de GenericViewset. Par exemple:

#views.py
class PolicyViewSet(viewsets.ViewSet, viewsets.GenericViewSet):
    def list(self, request):
        queryset = Policy.objects.all()
        page = self.paginate_queryset(queryset)
        serializer = PolicySerializer(page, many=True)
        return self.get_paginated_response(serializer.data)
1
Stgo DDV

Comment définir la pagination avec un review normal?

Si vous souhaitez utiliser "pagination_class" dans votre ciVoir, vous devez donc utiliser génériqueviewset au lieu de Viewset.

0
vikodink4