Ho как заменить страницу ошибок по умолчанию в Django?
У меня есть приложение Django и в главном urls.py
у меня есть
handler500 = 'common.view_utils.custom_500'
, который должен отображать мою пользовательскую страницу ошибок. Код custom_500
выглядит следующим образом
def custom_500(request):
logger.error(sys.exc_info())
t = loader.get_template('500.html')
type, value, tb = sys.exc_info()
return HttpResponseServerError(t.render(request, {
'exception_value': value,
'value': type,
'traceback': traceback.format_exception(type, value, tb)
}))
Однако когда я попытался протестировать его и поднял Error
из класса представления, Django отобразил стандартную Произошла ошибка сервера. Пожалуйста, свяжитесь с администратором. Страница ошибки.
Я думал, что если в коде появляется Error
, то это должно быть 500 ошибкой, которая будет обработана, но я, очевидно, ошибаюсь.
Помогите, пожалуйста, что я упускаю?
Спасибо,
V.
++++++ UPDATE1 +++++++
.
Извините, я забыл упомянуть, что я пробовал с DEBUG = False
Вам необходимо добавить в ваш основной urls.py все представления, которые будут вызываться при возникновении ошибки:
handler404 = 'APP_NAME.views.custom_page_not_found_view'
handler500 = 'APP_NAME.views.custom_error_view'
handler403 = 'APP_NAME.views.custom_permission_denied_view'
handler400 = 'APP_NAME.views.custom_bad_request_view'
Более того, вы можете отрисовать страницу, но вы должны установить правильный статус отрисовки, например:
return render(request,'YOUR-PAGE.html',status=404)