如何使用 Django Rest Framework 设置 Content-Disposition 标头

Rya*_*yan 8 django django-rest-framework

我正在使用 Django REST 框架提供图像。不幸的是它下载而不是显示。我想我必须设置 header Content-Disposition = 'inline'。我如何在View或 中执行此操作Renderer

class ImageRenderer(renderers.BaseRenderer):
    media_type = 'image/*'
    format = '*'
    charset = None
    render_style = 'binary'

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

class ImageView(APIView):
    renderer_classes = (ImageRenderer, )

    def get(self, request, format=None):
        image=MyImage.objects.get(id=1)
        image_file = image.thumbnail_png.file
        return Response(image)
Run Code Online (Sandbox Code Playgroud)

Ken*_*ars 6

根据Django 文档中的这个页面,您可以通过Content-Disposition这种方式设置标题:

response = Response(my_data, content_type='image/jpeg')
response['Content-Disposition'] = 'attachment; filename="foo.jpeg"'
Run Code Online (Sandbox Code Playgroud)

  • 如果文件名包含非 ASCII 字符,则此操作会失败。 (3认同)