Моя пагинация, похоже, не работает - проблема DRF

Я пытаюсь создать конечную точку, которая возвращает список постов. Мне нужно, скажем, 2 поста на страницу (только для тестирования! Я знаю, что это не такое большое число, чтобы вызвать проблему!) вот мой views.py

class blogsViewSet(ModelViewSet):
    queryset = Posts.objects.all()
    serializer_class = PostSerializer
    pagination_class = pagination.CustomPagination

    
    def list(self, request):
        data = request.data
        uid = data['uid']
        context = {"user": uid}
        blogs = Posts.objects.all()
        serializer = PostSerializer(blogs, many= True, context= context)
        return Response(serializer.data)

вот мой serializers.py

class PostSerializer(ModelSerializer):    
    isLiked = serializers.SerializerMethodField(method_name='check_react')
    totalLikes = serializers.SerializerMethodField(method_name='get_likes')
    totalComments = serializers.SerializerMethodField(method_name='get_comments')

    def check_react(self, post):
        userObj = Users.objects.get(userID = self.context['user'])
        #print(type(userObj))
        
        if Likes.objects.filter(postID = post, userID = userObj).exists():
            isLiked = Likes.objects.get(postID = post, userID = userObj)
            likeObj = LikeSerializer(isLiked)
            #print('isLiked: ', likeObj.data['isLiked'])
            return (likeObj.data['isLiked'])
        return(False)
        #print(isLiked)
    
    def get_likes(self, post):
        count = Likes.objects.filter(postID = post).count()
        return count

    def get_comments(self, post):
        count = PostsComments.objects.filter(postID = post).count()
        return count

    class Meta:
        model = Posts
        fields = '__all__'

и, вот мой pagination.py,

from rest_framework import pagination

class CustomPagination(pagination.PageNumberPagination):
    page_size = 2
    page_size_query_param = 'page_size'
    max_page_size = 3
    page_query_param = 'p'

Я импортирую этот класс в views.py и он работает как ожидалось, когда я пытаюсь получить список пользователей через userMVS

class userMVS(ModelViewSet):
    queryset = Users.objects.all()
    serializer_class = UserSerializer
    pagination_class = pagination.CustomPagination

Вы должны написать свою функцию списка представлений как -

def list(self, request, *args, **kwargs):
    queryset = Posts.objects.all()
    paginatedResult = self.paginate_queryset(queryset)
    serializer = self.get_serializer(paginatedResult, many=True)
    return Response(serializer.data)

Правка -

Предположим, что это мой класс пагинации -

class CustomPagination(PageNumberPagination):
    page_size = 8
    page_query_param = "pageNumber"

и используется таким образом на уровне класса и упоминается выше в функции списка -

class blogsViewSet(ModelViewSet):
    queryset = Posts.objects.all()
    serializer_class = PostSerializer
    pagination_class = CustomPagination

тогда это url, который должен работать

http://localhost:8000/urlofpostviewset/?pageNumber=passThePageNumber

Прочитайте из документов все свойства, которые вы используете в классе CustomPagination.

Вернуться на верх