2013-08-15 3 views
1

У меня есть пользовательская страница Django 500 и набор отладки для False. Когда мое приложение сталкивается с ошибкой во время выполнения, я получаю трассировку стека Django, как ожидалось.Страница ошибки Django не отображается с ошибкой синтаксиса

Однако, когда у меня есть синтаксическая ошибка, я получаю загадочную страницу Apache «Внутренняя ошибка сервера» и должен отлаживать Django, закрывая журнал Apache.

Почему Django не показывает страницу с ошибкой?

Я считаю, что я использовал страницы ошибок Django для всех ошибок, а не только для времени выполнения.

Любая помощь была бы принята с благодарностью.

+0

У вас может быть отправлен стек, который по умолчанию включен. Посмотрите здесь: https://docs.djangoproject.com/en/dev/howto/error-reporting/#server-errors. Также хорошо, что django не отображает отладочную информацию, когда DEBUG = False, она будет раскрывать информацию о вашем сервере и настройке. – Jingo

+0

@Jingo Я не думаю, что это помогло бы, из-за причин, объясненных в моем ответе ниже – Kimvais

+0

@ Кимваис согласился :) – Jingo

ответ

3

Это потому, что интерпретатор, запускающий django (запущенный apache), даже не запускается, поэтому нет возможности отобразить фактическую страницу.

Что входит в апача сруба питон переводчица stderr

От mod_wsgi documentation

При использовании mod_wsgi, если вы или веб-фреймворк вы используете не принимает конкретные меры, чтобы поймать исключения и представить подробные данные в альтернативный способ, единственное место, где будут записаны данные о незащищенных исключениях, содержится в файлах журнала ошибок Apache. Поэтому файлы журнала ошибок Apache являются вашим основным источником информации , когда все идет не так.

Подведем итог: SyntaxError означает, что код не Python так не один, чтобы поймать исключение и показать его в дружественной веб-страницы.

Я не знаю, как изменить это в Apache, но, по крайней мере, в моих тестах работает green unicorn + nginx я получаю stacktraces на 500 странице, если я запускаю зеленый единорога рабочих с --debug - даже тогда, когда Джанго не удается загрузка из-за SyntaxError

+0

Значит, нет никакого способа обойти это? Будет ли он работать под сервером Django? Или, возможно, nginx? – bbrame

+1

Использование сервера Django отказалось бы запускать сервер – Kimvais

Смежные вопросы