使用django-rest-framework服务图像

时间:2015-06-17 10:33:42

标签: django django-rest-framework

我正在尝试使用基于django-rest-api的api提供图像。

到目前为止,我有一个非常基本的api视图,可以加载图像及其mimetype并返回它。

@api_view(['GET'])
def get_pic(request, pk=None, format=None):
    //get image and mimetype here
    return HttpResponse(image, content_type=mimetype)

这一直运行良好,不过我在iOS上的一些新图像库上测试了它,发现API返回406错误。

我相信这是因为客户端正在发送一个Accept图像/ *,这个api视图除外。

在api上执行HEAD会返回以下内容;

GET, OPTIONS
Connection → keep-alive
Content-Type → application/json
Date → Wed, 17 Jun 2015 10:11:07 GMT
Server → gunicorn/19.2.1
Transfer-Encoding → chunked
Vary → Accept, Cookie
Via → 1.1 vegur
X-Frame-Options → SAMEORIGIN

如何更改此API的Content-Type以接受图片请求?

我尝试使用正确的media_type添加自定义解析器,但他似乎没有帮助。这是正确的方法,还是有更简单的方法从django-rest-framework提供图像?

1 个答案:

答案 0 :(得分:1)

您需要创建一个自定义renderer,如:

class JPEGRenderer(renderers.BaseRenderer):
    media_type = 'image/jpeg'
    format = 'jpg'
    charset = None
    render_style = 'binary'

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