I use django-rest-framework to create an endpoint that returns a PDF file. However, when there is an error displaying the PDF file, I want to return a JSON response. But DRF does pass data to be excluded from my PDFRenderer class. How can I use JSONRenderer instead, only if there is an error?
class PDFRenderer(BaseRenderer):
""" DRF renderer for PDF binary content. """
media_type = 'application/pdf'
format = 'pdf'
charset = None
render_style = 'binary'
def render(self, data, media_type=None, renderer_context=None):
return bytes(data)
For example, when my view says raise PermissionDenied(), because the authorized user does not have permission to view the requested PDF file, {'detail': 'You do not have permission to perform this action.'}as an argument datafor PDFRenderer.render.
Edit: I tried a custom exception handler , but apparently you still have to run it through the DRF exception handler as well, which passes it to the PDFRenderer.
source
share