如果您访问不存在的网站的子网址,请说 http://www.reddit.com/notathing
它将带您进入一个带有华丽图形的自定义网站,以及轻松链接以重新回到正轨。
Vanilla Flask将显示
Not Found
The requested URL was not found on the server. If you entered the URL manually please check your spelling and try again.
如何创造一个"全能"网页使用Flask来解决用户错误,例如这个?
答案 0 :(得分:4)
有关Error Handlers的文档中对此进行了描述。使用@app.errorhandler()
而不是@app.route()
来装饰视图会将其视为给定类型错误的视图。在您的情况下,404处理程序可能如下所示:
@app.errorhandler(404)
def not_found(e):
cool_image = pick_cool_image()
return render_template('404_not_found.html', image=cool_image)
现在404_not_found.html模板可以使用您在处理程序中选择的酷图像来显示一个有趣的页面。
您可以通过这种方式处理任何错误状态代码,但您也可以处理原本会导致500错误的Python异常。通过这种方式,您可以制作特定于错误类型的非常详细的错误页面。例如:
class NotModeratorError(Exception):
pass
@app.errorhandler(NotModeratorError)
def not_a_moderator(e):
return render_template('errors/not_a_moderator.html')
@app.route('/mod_powers')
def mod_powers():
if not current_user.is_moderator:
raise NotModeratorError()
答案 1 :(得分:2)
from flask import render_template
@app.errorhandler(404)
def page_not_found(e):
return render_template('404.html'), 404