【发布时间】:2021-01-23 23:02:42
【问题描述】:
我正在我的 API 上设置一个端点,它应该返回一个 XLSX 文件。 DRF 文档提到 https://github.com/wharton/drf-renderer-xlsx 作为主要的外部渲染包,除了似乎也能够渲染 XLSX 的 pandas。
在他们的代码示例中,他们使用了与 mixin 配对的 ReadOnlyViewset,但没有提及它是如何与 APIViews 一起使用的。尽管如此,我还是想使用https://harshahegde.dev/rendering-xlsx-files-in-django-rest-framework-ckagk293p00eumks1bf4dlhie 所示的 APIView 然而.. 这在使用 CURL 或 Postman 时效果很好,但是当通过浏览器完成时,我得到了这个错误:
'Request' object has no attribute 'accepted_renderer'
据我了解,这是因为没有设置 Accept 标头(例如 'Accept':'application/xlsx') 我通过从 renderer_classes 中删除 Mixin 来解决这个问题,所以它只返回一个名为“xlsx”的文件,但我不知道如何在没有 mixin 的情况下设置文件名。如何使用试图从浏览器访问 URL 的 APIView 设置文件名?
我的看法:
class SomedataXlsx(APIView):
renderer_classes = [XLSXRenderer, JSONRenderer]
def get(self, request):
queryset = Somedata.objects.all()
serializer = SomeDataSerializer(queryset, many=True)
return Response(serializer.data)
【问题讨论】:
标签: django-rest-framework django-drf-renderer