Ale*_*xio 7 python django rest django-models django-rest-framework
我有一个django应用程序,我想要公开模型图像,这样当我请求/image/school_id/400它将返回学校的图像与ID school_id裁剪并调整大小为400x400像素的框.这是我试过的
@api_view(['GET', 'POST'])
def image_view(request,  school_id, size):
    image = School.objects.get(school__pk=school_id).image
    resized_img = image #Handle resizing here
    return Response(resized_img, content_type='*/*')
Run Code Online (Sandbox Code Playgroud)
所有我得到的都是一个错误 'utf8' codec can't decode byte 0xff in position 0: invalid start byte
我如何返回图像?使用Django-rest-framework http://www.django-rest-framework.org/api-guide/renderers#advanced-renderer-usage
Kev*_*own 10
您正在尝试返回原始图像数据,并让Django REST Framework呈现响应.由于响应不应该根据所选格式而不同,因此您应该使用原始HttpResponse对象.
return HttpResponse(resized_img, content_type="image/png")
Run Code Online (Sandbox Code Playgroud)
请注意,content_type应该反映返回响应的内容类型,该内容类型应与要调整大小的图像的内容类型相匹配.
您得到的错误是因为Renderer类需要基于文本的响应,而不是图像数据.Django REST Framework不会将自定义渲染器应用于HttpResponse类,仅适用于Django REST Framework Response类.