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)