对于用Python编写的Google Appengine项目,我希望在发生错误时拥有自己的错误消息。我想使用error_handlers,如下所述: http://code.google.com/intl/nl/appengine/docs/python/config/appconfig.html#Custom_Error_Responses
在应用程序中,我使用带有debug = False
当我在代码中创建错误时,我从浏览器中收到标准的 500 Server错误消息。
我创建了一个名为default_error.html
问题是:保存此自定义错误页面的位置?
BTW这是我的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
答案 0 :(得分:4)
使用python部分定义自定义404对我有用:
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)
这使您可以更好地控制可能要显示的错误消息和其他动态。
答案 1 :(得分:0)
解决此问题的一种方法是定义一个'BaseRequestHandler'类,您的请求处理程序将从该类进行子类化。 BaseRequestHandler类可以覆盖handle_exception()方法(请参阅http://code.google.com/appengine/docs/python/tools/webapp/requesthandlerclass.html#RequestHandler_handle_exception)以呈现错误页面。
答案 2 :(得分:0)
部分发现它是如何运作的。谢谢大家的答案。
HTM文件的位置可以位于核心或单独的目录中。如果是这种情况,请使用app.yaml文件中的以下代码:
error_handlers:
- file: error_handlers/default_error.html
现在应该将显示的html文件放在error_handlers目录
中在main.py中导入一个不存在的模块时,会显示上面的页面。
要获取500错误,我使用webapp2显示自定义错误页面。发生错误时始终显示此页面。即使存在over_quota错误且app.yaml配置正确。我还删除了webapp2并再次使用了webapp。现在根本没有显示任何页面。
我有另一个应用程序,目前过度引用。如何显示over_quota html页面?这是一个错误吗?