500.html вместо 404.html - PullRequest
       22

500.html вместо 404.html

8 голосов
/ 02 марта 2011

У меня есть базовое приложение с административной панелью и домашней страницей direct_to_template. Когда я набираю url, который не совпадает ни с одним из urls, я получаю ошибку 404, но когда я устанавливаю для DEBUG значение false, я получаю 500.html вместо 404.html. Есть идеи почему?

Ответы [ 5 ]

8 голосов
/ 02 марта 2011

Django обслуживает 500 в случае сбоя функции представления, что означает, что должен быть некоторый не отладочный специфический разрыв кода.

Единственный способ узнать, это посмотреть, какое исключение django регистрирует либо через журналы вашего сервера, либо по электронной почте, которую django отправляет в список ADMINS.

4 голосов
/ 08 июля 2012

Я бы также проверил путь TEMPLATE_DIRS в settings.py, так как это была проблема в моем случае. Django вызывает ошибку 404, но так как он не смог найти 404.html (по пути, указанному в TEMPLATE_DIRS), возникла ошибка 500 - шаблон не найден (который отображается либо в браузере, когда отладка True, либо в журнале сервера, когда отлаживать = ложь).

2 голосов
/ 06 октября 2013

Я встречал те же проблемы. И я заставляю систему отправлять сообщение об ошибке на мой gmail:

SuspiciousOperation: Invalid HTTP_HOST header (you may need to set ALLOWED_HOSTS): 127.0.0.1:8000

Итак, я добавляю этот код в settings.py:

ALLOWED_HOSTS = ['127.0.0.1', 'localhost']

А теперь все в порядке. Я думаю, что когда вы делаете DEBUG и TEMPLATE_DEBUG ложными, вы должны установить ALLOWED_HOSTS.

Удачи.

1 голос
/ 22 апреля 2019

Если кто-нибудь когда-либо сталкивался с такой ошибкой, вы можете также написать свое мнение так:

def error_404(request, exception):
    data = {"name": "yoursite.com"}
    return render(request,'404.html', data)

Без exception argument тогда это приводит к error 500 и в предпочтении 500.html выполняется.

1 голос
/ 19 августа 2013

Может быть, в вашем 404.html что-то не так. Например, я использую тег extends, например

{% extends base.html%}

в моем 404.html, тогда он всегда показывает «ошибка 500» вместо «страница не найдена 404». но когда я исправляю свою ошибку следующим образом

{% extends "base.html" %}

все идет хорошо.

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