Django media url не разрешен в 500 внутренних шаблонах ошибок сервера

Я использую шаблон 500.html для своего приложения, которое является идентичной копией 404.html с некоторыми незначительными изменениями текста.

Интересно, что контекстная переменная {{media_url}} не будет разрешена сервером, если представлен 500.html(например, когда я заставляю внутреннюю ошибку сервера), в результате чего страница без загрузки css.

Простым способом обойти это было бы жесткое кодирование ссылок на css, но мне просто интересно, почему media_url не разрешен. Вероятно, это связано с тем, что сервер обнаруживает внутреннюю ошибку сервера и приводит к тому, что контекстные переменные больше не доступны!?

Ответ 1

Обработчик ошибок 500 не передает RequestContext в шаблон, он просто использует Context. Как вы знаете, MEDIA_URL добавляется в процессор контекста, который включается только при использовании RequestContext.

Вы можете установить свой собственный обработчик 500 и передать RequestContext, если хотите.

Здесь ссылка на django docs на создание настраиваемого обработчика500.

Ответ 2

Документы django рекомендуют не использовать шаблон для вашего файла 500.html, потому что нет способа справиться с ошибкой в ​​рендеринге этого шаблона.

Просто придерживайтесь прямого HTML файла, информирующего пользователя о том, что произошла ошибка. Это все, что им нужно знать.

Вы можете посмотреть журналы сервера, что вам нужно знать.