Django rest framework 错误时返回不同的内容类型响应

Django rest framework 错误时返回不同的内容类型响应,django-rest-framework,Django Rest Framework,给定具有一个渲染器的端点: 类PNG渲染器(BaseRenderer): 媒体类型='image/png' 格式='png' def render(自身、数据、媒体类型=无,渲染器上下文=无): 返回数据 @渲染器_类((pngrender,)) 定义某些端点(请求,格式=无): 文件名='foo.png' 如果不存在os.path.exists(文件名): raise NotFound(“未找到文件”) 其他: 将open(filename,'rb')作为f: data=f.read() 返回

给定具有一个渲染器的端点:

类PNG渲染器(BaseRenderer):
媒体类型='image/png'
格式='png'
def render(自身、数据、媒体类型=无,渲染器上下文=无):
返回数据
@渲染器_类((pngrender,))
定义某些端点(请求,格式=无):
文件名='foo.png'
如果不存在os.path.exists(文件名):
raise NotFound(“未找到文件”)
其他:
将open(filename,'rb')作为f:
data=f.read()
返回响应(数据)
如果找不到
foo.png
,我想返回
application/json
。在现实生活中文件名并不是不断地
“foo.png”
而是动态的,显然


如何返回json,以便在响应中将
内容类型
正确设置为
应用程序/json
,即使已向端点提供format='png'。

在编写问题时,我找到了更改呈现器的答案:
request.accepted_renderer=JSONRenderer()

特别是:

@renderer\u类((pngrender,))
定义某些端点(请求,格式=无):
文件名='foo.png'
如果不存在os.path.exists(文件名):
request.accepted_renderer=JSONRenderer()
raise NotFound(“未找到文件”)
其他:
将open(filename,'rb')作为f:
data=f.read()
返回响应(数据)
我不确定这是否是处理二进制
内容类型的异常的正确方法