Плоские страницы Django поднимают 404, когда DEBUG имеет значение False (существует 404 и 500 шаблонов) - PullRequest
4 голосов
/ 27 февраля 2010

Я использую стабильную версию Django 1.1.1. Когда DEBUG установлен на True Плоские страницы Django работает правильно; когда DEBUG равняется False на каждой плоской странице, к которой я пытаюсь получить доступ, возникает ошибка 404 (мой шаблон ошибок, очевидно, работает правильно).

Поиск в Интернете предлагает создать 404 и 500 шаблонов, которые я сделал.

Я добавил в FlatpageFallBackMiddleware в middleware_classes, а плоские страницы добавлены в установленные приложения. Любые идеи, как я могу заставить работать flatpages?

Ответы [ 5 ]

6 голосов
/ 11 мая 2010

То же самое происходило со мной, пока я не обнаружил, что представление 404 отправляет ответ о статусе 200. Поэтому все, что вам нужно сделать, это добавить это в представление, которое обрабатывает ваш ответ 404:

def 404_handler(request):    ...

    response = render_to_response('404.html', locals(), context_instance=RequestContext(request))
    response.status_code = 404
    return response
1 голос
/ 28 февраля 2010

попробуйте добавить FlatpageFallBackMiddleware до django.middleware.common.CommonMiddleware

и убедитесь, что ваши 404.html и 500.html хранятся в корне ваших шаблонов dir (eg: templates/404.html)

0 голосов
/ 25 сентября 2013

Создайте представление обработки ошибок, которое печатает трассировку стека import traceback;traceback.print_exc() вместо игнорирования ошибки в автоматическом режиме.

0 голосов
/ 31 мая 2010

Была та же ошибка в другом контексте. Проблема была вызвана тем, что я изменил файл urls.py с

from django.conf.urls.defaults import *

до

from django.conf.urls.defaults import include, patterns

, как предложено pylint, но в нем отсутствуют handler404 и handler500, которые, как ожидается, будут импортированы неявно при импорте *.

, поэтому либо добавление этих файлов для импорта, либо просто импорт *, как предполагают документы django, решило проблему.

0 голосов
/ 28 февраля 2010

Ключ проверяет порядок вашего промежуточного программного обеспечения. Промежуточное программное обеспечение выполняется в нисходящем порядке по пути в (запрос и просмотр) и в нижнем порядке по пути из (ответ и исключение). Так что, если вы переходите к своему обработчику 404 по тому, что должно быть совершенно разумным URL-адресом для плоской страницы, тогда что-то ловит 404, прежде чем вызывается промежуточное программное обеспечение для плоских страниц.

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