drf後端生成多種格式文件並下載

  • 安裝djangorestframework-csv
  • settings中設置
REST_FRAMEWORK = {
	 'DEFAULT_RENDERER_CLASSES': (
		'rest_framework_csv.renderers.CSVRenderer',)
}
  • 首先我們先寫一個接口來進行下載
  • /api/download/file/xxx
class FileDownloadView(APIView):
    """文件下載"""

    permission_classes = (IsAuthenticated, )

    def get(self, request, *args, **kwargs):
        type = request.GET.get('type', None)
        renderer = FileRender()
        data = (
            FileRenderSerializer(instance).data
            for instance in queryset
        )
        response = StreamingHttpResponse(
            renderer.render(data),
            content_type='text/{}'.format(type)
        )
        response['Content-Disposition'] = 'attachment; filename="somefilename.{}"'.format(type)
        return response
  • UserRenderSerializer
class FileRenderSerializer(serializers.ModelSerializer):
    class Meta:
        model = File
        fields = "__all__"
  • FileRender
class FileRender(renderers.CSVStreamingRenderer):

    header = [
            'name',
            'add_time'
    ]
    labels = dict([
        ('name', u'姓名'),
        ('add_time', u'添加時間'),
    ])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章