Skip to main content

Command Palette

Search for a command to run...

gtgttrbgbgbgb

Published
1 min readView as Markdown
class FeaturedBlogsView(generics.ListAPIView):
    """
    A view for fetching featured blog posts.
    """
    serializer_class = BlogPostSerializer
    permission_classes = [permissions.AllowAny]

    def get_queryset(self):
        """
        Return featured blog posts ordered by creation date.
        """
        return BlogPost.objects.filter(is_featured=True).order_by('-created_at')

    def list(self, request, *args, **kwargs):
        """
        Fetch and return featured blog posts with pagination.
        """
        try:
            queryset = self.get_queryset()
            page = self.paginate_queryset(queryset)
            if page is not None:
                serializer = self.get_serializer(page, many=True)
                return self.get_paginated_response(serializer.data)
            serializer = self.get_serializer(queryset, many=True)
            return Response(serializer.data)
        except Exception as e:
            logger.error(f"Error fetching featured blogs: {e}")
            return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)