Пользовательский обработчик ошибок django при использовании django-hosts
У меня есть система, на которой развернут django-hosts, все работает нормально. До сих пор я обрабатывал 404 и 500 ошибки в продакшене с помощью хитрого трюка: просто поместил файлы 500.html и 404.html в корень папки templates. Это очень хорошо обрабатывает эти ошибки в продакшене (debug=False).
Однако теперь я хочу более творчески подойти к обработке ошибок и обратной связи с пользователем. У меня есть другие проекты, где я создал пользовательское представление для обработки ошибок.
e.g.
def custom_error_500(request, exception=None):
print ('error 500 ') #For debugging to verify view is being processed.
return render(request, "errors/500.html", status=500)
и затем установите этот параметр в нижней части urls.py
(имя приложения - 'main')
handler500 = 'main.errorviews.custom_error_500'
Все это прекрасно работает в проекте, который НЕ использует django-hosts.
Преимущество создания пользовательского представления в том, что контекст передается в RequestContext
шаблону, тогда как по умолчанию это не так ( см. ссылку).
Теперь я знаю, что с django-hosts происходит магия в том, как urls.py обрабатывается для каждого хоста. Может ли это быть причиной? Я пробовал поместить параметр hander500 во все возможные urls.py, которые у меня есть в проекте, но я получаю тот же результат, то есть система просто ищет 500.html в корне и если не находит, то выводит стандартное встроенное сообщение Server Error 500.
У кого-нибудь еще была такая же проблема? Не могу поверить, что я единственный, кто пытается вывести сообщение об ошибке клиента, используя django hosts :-).
Заранее спасибо за любую помощь!