我正在尝试使用基于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提供图像?
答案 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