Пользовательская ошибка TastyPie и код состояния = 500 с отладкой = True

Я пытаюсь вызвать пользовательскую ошибку в моем файле api.py с DEBUG = True. Выдает ошибку

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


person Abhishek Lodha    schedule 10.03.2017    source источник


Ответы (1)


Используйте 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"))
person Deepak    schedule 10.03.2017