Как создать пользовательские страницы ошибок с app.yaml для Google Appengine Python - PullRequest
6 голосов
/ 23 января 2012

Для проекта Google Appengine, написанного на Python, я хочу иметь собственные сообщения об ошибках при возникновении ошибки.Я хочу использовать обработчики ошибок, как описано в: http://code.google.com/intl/nl/appengine/docs/python/config/appconfig.html#Custom_Error_Responses

В приложении я использую webapp с debug = False

Когда я создаю ошибку в своем коде, я получаю стандарт 500 Ошибка сервера сообщение из браузера.

Я создал пользовательскую страницу ошибок с именем default_error.html

Вопрос: где сохранить эту пользовательскую страницу ошибок?

Кстати, это мой app.yaml код:

application: customerrorpage
version: 1
runtime: python
api_version: 1


error_handlers:
- file: default_error.html

handlers:
- url: /good.htm
  static_files: static/good.htm
  upload: static/good.htm

- url: /
  static_files: static/good.htm
  upload: static/good.htm

- url: /.*
  script: main.py

Ответы [ 3 ]

4 голосов
/ 23 января 2012

Определение пользовательского 404 только с частью Python работает для меня:

app.error_handlers[404] = handle_404

def handle_404(request, response, exception):
    c = {'exception': exception.status}
    t = jinja2.get_jinja2(app=app).render_template('404.html', **c)
    response.write(t)
    response.set_status(exception.status_int)

Это дает вам больший контроль над сообщениями об ошибках и другой динамикой, которую вы, возможно, захотитедисплей.

0 голосов
/ 23 января 2012

Частично нашел, как это работает. Спасибо всем за ваши ответы.

Расположение файла HTM может быть в ядре или в отдельном каталоге. Если это так, используйте, например, следующий код в файле app.yaml:

error_handlers:
- file: error_handlers/default_error.html

html-файл для отображения теперь должен быть помещен в каталог error_handlers

Когда вы импортируете несуществующий модуль в main.py, отображается указанная выше страница.

Чтобы получить ошибку 500, я использовал webapp2, чтобы показать пользовательскую страницу ошибки. Эта страница всегда отображается при возникновении ошибки. Даже когда есть ошибка over_quota и app.yaml правильно настроен. Я также удалил webapp2 и снова использовал webapp. Теперь страница вообще не отображается.

У меня есть другое приложение, которое в данный момент перезаписано. Как отобразить html-страницу over_quota? Это ошибка?

0 голосов
/ 23 января 2012

Одним из способов решения этой проблемы является определение класса BaseRequestHandler, из которого обрабатываются ваши обработчики запросов. Класс BaseRequestHandler может переопределить метод handle_exception () (см. http://code.google.com/appengine/docs/python/tools/webapp/requesthandlerclass.html#RequestHandler_handle_exception) для отображения страницы ошибки.

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