TastyPie自定义错误和状态代码= 500,debug = True

时间:2017-03-10 08:21:18

标签: django tastypie custom-error-handling

我正在尝试使用DEBUG = True在我的api.py文件中抛出自定义错误。它抛出错误

{
"error_message": "Sorry, this request could not be processed. Please try again later."
}

这是默认的TASTYPIE_CANNED_ERROR消息。

我希望错误是这样的:

{"error_message": "{'id': 2671, 'error': 'Duplicate'}"}

我尝试重写_handle_500方法,但这似乎返回我的网站html页面作为回应。

我使用状态代码400获得所需的格式:

raise BadRequest({"id": int(attempt[0].id), "error": "Duplicate"})

但我需要状态代码为500。

1 个答案:

答案 0 :(得分:0)

使用ImmediateHttpResponse并创建错误消息dict,然后将其作为响应发送。并且还必须指定content_type =“application / json”。

from django.http import HttpResponse
from tastypie.exceptions import ImmediateHttpResponse

// Build your response
response = {"error_message": {'id': 2671, 'error': 'Duplicate'}}

raise ImmediateHttpResponse(response=HttpResponse(json.dumps(response), status=401, content_type="application/json"))