Технология используется:Включить данные запроса в данном ответ пользовательских обработчиков исключений Django Framework Rest
http://www.django-rest-framework.org
Исключение:http://www.django-rest-framework.org/api-guide/exceptions/
Включенного пример rest_framework по умолчанию в пользовательском файле exceptions.py:
from rest_framework.views import exception_handler
import sys
def custom_exception_handler(exc, context=None):
# Call REST framework's default exception handler first,
# to get the standard error response.
response = exception_handler(exc)
# Now add the HTTP status code to the response and rename detail to error
if response is not None:
response.data['status_code'] = response.status_code
response.data['request'] = request
response.data['error'] = response.data.get('detail')
del response.data['detail']
return response
Отсылает основную информацию об ошибке, такую как «Http404» и т. Д., Но нет данных запроса, например, IP-адрес и т. Д.
Лучший способ добавить мой запрос в ответ? Заранее спасибо.
UPDATE (и решается):
Итак, я хотел решить это с помощью DjangoRestFramework 2.4.x, но эта версия не имеет запроса или контекстные варианты данных для обработчика пользовательских исключений. Обновление до 3.1.3 упростило добавление данных в ответ. Новый код теперь выглядит следующим образом (с использованием версии 3.1.3):
def custom_exception_handler(exc, request):
# Call REST framework's default exception handler first,
# to get the standard error response.
response = exception_handler(exc, request)
# Send error to rollbar
rollbar.report_exc_info(sys.exc_info(), request)
# Now add the HTTP status code to the response and rename detail to error
if response is not None:
response.data['status_code'] = response.status_code
response.data['error'] = response.data.get('detail')
del response.data['detail']
return response
Пожалуйста, проверьте отступы ' response = exception_handler (exc) '. Правильно ли это? –
Спасибо Rahul - да, это правильно - просто выглядит неправильно с тем, как я вставлял его здесь –