Пользовательский обработчик ошибок 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 :-).

Заранее спасибо за любую помощь!

Вернуться на верх