рендерер вернул юникод и не указал значение набора символов

Я использую Django 2.x и DRF.

От моего APIView, Я хочу вернуться pdf или eps файл двоичных данных.

class DownloadFile(APIView):
    serializer_class = DownloadFileSerializer
    renderer_classes = (BinaryFileRenderer,)

    def post(self, request):
        serializer = self.serializer_class(data=request.data)
        serializer.is_valid(raise_exception=True)

        name = serializer.validated_data.get('name')
        data = serializer.validated_data.get('imgdata')

        mimetype = None

        data, mimetype = convert_file_to_pdf_or_eps(data)

        if data and mimetype:

            response = Response(data=data, content_type=mimetype)
            ascii_name = get_ascii_name(name, "QRCode")

            response['Content-Disposition'] = 'attachment; filename=%s' % "-".join(filename.split())

            return response
        else:
            return Response(status=status.HTTP_400_BAD_REQUEST, data='Either data or mime type was missing')

и BinaryFileRenderer

from rest_framework.renderers import BaseRenderer


class BinaryFileRenderer(BaseRenderer):
    media_type = 'application/octet-stream'
    format = None
    charset = None
    render_style = 'binary'

    def render(self, data, media_type=None, renderer_context=None):
        return data

Это отлично работает для pdfданные, но с данными EPS дает ошибку

renderer returned unicode, and did not specify a charset value

1 ответ

Вам нужно измениться сcharset = Noneкcharset = 'utf-8'

Другие вопросы по тегам