Как экспортировать данные о книгах определенного жанра в формат CSV или JSON
views.py
class ExportBooksAPIView(APIView):
permission_classes = [IsAuthenticated]
def get_queryset(self, genre_id):
try:
genre = Genre.objects.get(id=genre_id)
books = genre.books.all()
return books
except Genre.DoesNotExist:
return None
def get(self, request):
genre_id = request.GET.get('genre_id')
if not genre_id:
return Response("Genre ID not specified in the request.", status=status.HTTP_400_BAD_REQUEST)
books = self.get_queryset(genre_id)
if not books:
return Response(f"Genre with ID '{genre_id}' not found.", status=status.HTTP_404_NOT_FOUND)
serializer = BookSerializer(books, many=True)
csv_data = self.serialize_to_csv(serializer.data)
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = f'attachment; filename="data_books.csv"'
response.write(csv_data)
return response
def serialize_to_csv(self, data):
csv_buffer = io.StringIO()
csv_writer = csv.writer(csv_buffer)
header_row = ['Book Name', 'Author Name', 'Number of Pages']
csv_writer.writerow(header_row)
for book in data:
csv_writer.writerow([book.get('name', ''), book.get('author', {}).get('name', ''), book.get('pages', '')])
return csv_buffer.getvalue()
core/urls.py
py
path('export-books/', ExportBooksAPIView.as_view(), name='export_books'),
]
project/urls.py
path('genre/',include('core.urls')),
экспорт всех данные для определенного жанра в структурированном формате (например, CSV или JSON).
Но я получаю
{ "detail": "Не найдено". }
я должен получить подробную информацию обо всех книгах, которые относятся к определенному жанру