URL-адрес носителя django не разрешен в шаблоне 500 внутренних ошибок сервера - PullRequest
16 голосов
/ 05 апреля 2010

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

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

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

Ответы [ 2 ]

11 голосов
/ 05 апреля 2010

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

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

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

3 голосов
/ 05 апреля 2010

Django docs рекомендует не использовать шаблон для файла 500.html, потому что нет способа устранить ошибку при отображении этого шаблона.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...