如果你在浏览器的地址栏中输入了不可用的路由,那么会显示一个状态码为 404 的错误页面。现在这个错误页面太简陋、平庸,而且样式和使用了 Bootstrap 的页面不一致。
像常规路由一样,Flask 允许程序使用基于模板的自定义错误页面。最常见的错误代码有两个:404,客户端请求未知页面或路由时显示;500,有未处理的异常时显示。为这两个错误代码指定自定义处理程序的方式如下所示:
- @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
- {% extends "base.html" %}
-
- {% block title %}Flask - Page Not Found{% endblock %}
-
- {% block page_content %}
- <div class="page-header">
- <h1>Not Foundh1>
- div>
-
- {% endblock %}
其继承了一个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 navigationspan>
- <span class="icon-bar">span>
- <span class="icon-bar">span>
- <span class="icon-bar">span>
- button>
- <a class="navbar-brand" href="/">Flaskya>
- div>
- <div class="navbar-collapse collapse">
- <ul class="nav navbar-nav">
- <li><a href="/">Homea>li>
- ul>
- div>
- div>
- div>
- {% endblock %}
-
- {% block content %}
- <div class="container">
- {% block page_content %}{% endblock %}
- div>
- {% endblock %}
于是当我输入一个无效的url时,页面上会出现我定义的报错:
并且当我打开控制台检查时,发现状态码为404:
参考资料:
Flask Web开发:基于Python的Web应用开发实战 ([美] Miguel Grinberg)