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 файла, информирующего пользователя о том, что произошла ошибка. Это все, что им нужно знать.
Вы можете посмотреть журналы сервера, что вам нужно знать.