Flask允许程序使用基于模板的自定义错误页面。
常见的错误页面有以下两种:
1.404:客户端请求未知页面或者路由时候显示
2.500:有未处理的异常时候显示
在hello.py中自定义错误页面:
from flask import Flask, render_template from flask_bootstrap import Bootstrap app = Flask(__name__) bootstrap = Bootstrap(app) @app.route('/') def index(): return render_template('index.html') @app.errorhandler(404) def page_not_found(e): return render_template("404.html"),404 @app.errorhandler(500) def internal_server_error(e): return render_template("500.html"),500
错误处理程序返回响应和该错误对应的数字状态码
因为错误界面只是内容不同,其他的都是一样的,所以可以先定义一个基础模板,所有的错误页面都继承此模板,只修改内容即可。
基模板:templates/base.html
{% extends "bootstrap/base.html" %} {#标题#} {% block title %}Flasky{% endblock %} {#导航#} {% block navbar %} <div class="navbar navbar-inverse" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a href="/" class="navbar-brand">Flasky</a> </div> <div class="navbar-collapse"> <ul class="nav navbar-nav"> <li><a href="/">Home</a> </li> </ul> </div> </div> </div> {% endblock %} {#content中内容由衍生模块定义#} {% block content %} <div class="container"> {% block page_content %}{% endblock %} </div> {% endblock %}
定义错误页面:
404错误页面:templates/404.html
{% extends "base.html" %} {% block title %}Flasky - Page Not Found{% endblock %} {% block page_content %} <div class="page-header"> <h1>Not Found</h1> </div> {% endblock %}
运行结果: