Страница ошибки Django не отображается - PullRequest
0 голосов
/ 09 января 2012

Я использую django 1.1.4 и python 2.6.6 с mod_wsgi для создания веб-сайта.

Клиент хочет, чтобы на страницах 404 и 500 имелся логотип и ссылка на домашнюю страницу.Я написал простые страницы.Это больше, чем 512 байт.Я ходил по файлам в PROJECT_ROOT / templates /

, если я установил отладку равной True, ошибка говорит об ошибке 404.но когда я устанавливаю значение False и пытаюсь загрузить страницу, которая не существует, я получаю внутреннюю ошибку сервера, которая выглядит следующим образом:

Внутренняя ошибка сервера

сервер обнаружил внутреннюю ошибку или неправильную конфигурацию и не смог выполнить ваш запрос.

Пожалуйста, свяжитесь с администратором сервера root @ localhost и сообщите им о времени возникновения ошибки и обо всех действиях, которые вы могли совершить, возможно, вызвавшихошибка.

Дополнительные сведения об этой ошибке могут быть доступны в журнале ошибок сервера.Сервер Apache / 2.2.15 (CentOS) на www.anglais-verbe.com Порт 80

Что мне делать?

Я не написал ни одного представления для обработки 404, 500или внес изменения в urls.py.

Это мой первый полноценный проект django, и я не уверен, что происходит не так.

Обновление:

Мой адрес электронной почты администратора:

File "/usr/lib/python2.6/site-packages/django/core/handlers/base.py", line 125, in get_response
   callback, param_dict = resolver.resolve404()

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 267, in resolve404
   return self._resolve_special('404')

 File "/usr/lib/python2.6/site-packages/django/core/urlresolvers.py", line 259, in _resolve_special
   callback = getattr(self.urlconf_module, 'handler%s' % view_type)

AttributeError: 'module' object has no attribute 'handler404'

Ответы [ 2 ]

2 голосов
/ 09 января 2012

вы можете установить обработчик 404 в своем основном urls.py:

handler404 = 'yourproject.views.file_not_found_404'

тогда вам нужно создать следующий вид в views.py:

from django.shortcuts import render_to_response
from django.template import RequestContext

def file_not_found_404(request):
    #create some variables here if you like
    path = request.path
    response = render_to_response('404.html', locals(),
                              context_instance=RequestContext(request))
    response.status_code = 404
return (response)

тогда вы можете создать шаблон для вашего 404 в папке шаблонов:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL {{ path }} was not found on this server.</p>
<hr>
<address>Apache/2.2.3 (CentOS) Server at yourdomain.com port 80</address>
</body></html>

Надеюсь, это поможет :) Это также должно работать подобно ошибке 500

1 голос
/ 09 января 2012
  1. Дважды проверьте, что файлы вашего шаблона имеют имена 404.html и 500.html
  2. Если debug=FALSE, то поведение Django по умолчанию заключается в отправке электронной почты администраторам.Что говорит трассировка?
  3. Если у вас нет этого электронного письма, посмотрите в журнале ошибок apache, чтобы увидеть, есть ли какие-либо подсказки.В Debian (я не знаю CentOS на пределе своей головы), если предположить, что apache2, местоположение:

    tail /var/log/apache2/error.log
    
...