2017-03-10 8 views
0

私はapi.pyファイルにDEBUG = Trueでカスタムエラーを投げようとしています。エラーをスローするTastyPie debug = Trueでカスタムエラーとステータスコード= 500

{ 
"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

答えて

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")) 
関連する問題