我有一个Flask应用程序,它返回HTML页面和对API请求的JSON响应 . 我想根据请求的内容类型更改错误处理程序返回的内容 . 如果客户端请求 application/json
,我想返回 jsonify
响应,否则我想返回 render_template
响应 . 如何检测所请求的内容并适当更改响应?
当前的错误处理程序我只返回一个HTML响应 .
def register_errorhandlers(app):
"""Register error handlers."""
def render_error(error):
"""Render error template."""
# If a HTTPException, pull the `code` attribute; default to 500
error_code = getattr(error, 'code', 500)
return render_template('{0}.html'.format(error_code)), error_code
for errcode in [401, 404, 500]:
app.errorhandler(errcode)(render_error)
1 回答
使用request.content_type获取客户端随请求发送的内容类型 . 使用request.accept_mimetypes获取客户端指示它可以在响应中接受的mimetypes . 使用这些来确定要返回的内容 .