В общем, вы можете зарегистрировать свой собственный обработчик500 и проверить, является ли запрос ajax, а затем вернуть ответ об ошибке ajax, который указывает, что произошло, если DEBUG равен True, или просто выдает общую ошибку, если DEBUG равен False.
Другие варианты: использовать Firebug или Chrome Inspector для просмотра ответа Ajax или настроить какую-либо форму ведения журнала, в котором регистрируются ошибки, что полезно, даже если сайт развернут, чтобы выполнить вскрытие ошибок.это может произойти.
Сам Django имеет встроенные возможности ведения журналов, одна из которых - отправка электронной почты администраторам, но вы можете определить свое собственное, используя интеграцию Django со встроенной системой регистрации Python .Одним из вариантов обработчика для них является django-sentry , который я использую на всех своих производственных сайтах для записи любой произошедшей ошибки, а также включает возможность переопределения обработчика 500 для предоставления конечному пользователю ссылочного номера, который можетиспользовать для поиска их точного экземпляра ошибки.
Sentry поставляется с 2 приложениями, одно из которых является сервером, а другое - клиентом.В типичных производственных условиях, когда несколько компьютеров обслуживают один и тот же сайт, у вас будет выделенный часовой сервер, который выполняет только часовой.Однако для отдельного сайта, в котором он интегрирован с сайтом, все в порядке.
Для настройки часового режима вам необходимо добавить sentry
(сервер) и sentry.client
(клиент) к вашему INSTALLED_APPS
.Затем вам нужно будет настроить ведение журнала.
Вот пример:
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"handlers": {
"mail_admins": {
"class": "django.utils.log.AdminEmailHandler",
"level": "ERROR"
},
"sentry": {
"class": "sentry.client.handlers.SentryHandler",
"level": "ERROR",
}
},
"loggers": {
"django.request": {
"handlers": ["sentry", "mail_admins"],
"level": "ERROR",
"propagate": True
}
},
}
В приведенном выше примере все еще будут отправляться сообщения администраторам электронной почты в случае возникновения ошибки и DEBUG = False
.Если вы не хотите, чтобы это делалось, удалите mail_admins
из обработчиков на django.request
.