Правильный способ обработки ошибок в Django - PullRequest
2 голосов
/ 03 февраля 2011

Привет всем Я только что понял, что при развертывании debug = False делает что-то вроде этого:

    try:
        fb_friends_raw = retrieve_and_store_fb_friends(request.facebook.uid, request.facebook.access_token)
    except Exception, e: 
        messages.error( request, 'Cannot retrieve your friends, do it later.' + str(e))
        return HttpResponseServerError('Cannot retrieve your friends, do it later.' + str(e))

приведет вас к простому html-файлу с ошибкой в ​​качестве основного тела, а не к 500.html. Я не думаю, что 404 подходит, потому что это ошибка сервера, а не страница не найдена.

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

Как правильно исправлять ошибки при развертывании?

1 Ответ

0 голосов
/ 03 февраля 2011

Это потому, что HttpServerResponse просто HttpResponse http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponseServerError

500.html загружается, когда представление вызывает исключение .http://docs.djangoproject.com/en/dev/topics/http/views/#the-500-server-error-view

Если вы хотите отобразить конкретный шаблон для этого исключения, вы можете просто вернуть обычный ответ, но изменить status_code на 500.
http://docs.djangoproject.com/en/dev/ref/request-response/#django.http.HttpResponse.status_code

Дляпример:

response = direct_to_template(request, "mytemplate.html", {})
response.status_code = 500
return response
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...