BootstrapFlask入门到精通(四)

Flask允许程序因模版定义自己的自己错误页面, 较常见的荒唐页面有404 page
not found错误, 500 internal server
error服务器错误。下面,我们基于Flask-Bootstrap来自定义这有限种植错误提示页面。Flask-Bootstrap是Flask扩展包,它能提供基于Bootstrap
的页面框架样式。

先是, 我们若设置bootstrap扩展包(pip install
flask-bootstrap),然后配置页面显示模版

 1 {% extends "bootstrap/base.html" %}
 2 <!-- 标题域 -->
 3 {% block title %}Flasky{% endblock %}
 4 
 5 {% block navbar %}
 6 <div class="navbar navbar-inverse" role="navigation">
 7     <!-- 导航条 -->
 8     <div class="container">
 9         <div class="navbar-header">
10             <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
11                 Toggle navigation
12                 
13                 
14                 
15             </button>
16             <a class="navbar-brand" href="/">Flasky</a>
17         </div>
18         <div class="navbar-collapse collapse">
19             <ul class="nav navbar-nav">
20                 <li><a href="{{url_for('hello', user_name='Jack')}}">Hello</a></li>
21             </ul>
22         </div>
23     </div>
24 </div>
25 {% endblock %}
26 
27 {% block content %}
28 <!-- 内容块 -->
29 <div class="container">
30     <div class="page-header">
31         <h1>Hello, {{ name }}!</h1>
32     </div>
33 </div>
34 {% endblock %}

该页面定制了导航久,标题和情节三单部分,然后我们根据boots.html,制作个性化错误页面

1 {% extends 'boots.html' %}
2 {% block content %}
3 <!-- 内容块 -->
4 <div class="container">
5     <div class="page-header">
6         <img src="{{ url_for('.static',filename='404.jpg') }}">
7     </div>
8 </div>
9 {% endblock %}

1 {% extends 'boots.html' %}
2 {% block content %}
3 <!-- 内容块 -->
4 <div class="container">
5     <div class="page-header">
6         <img src="{{ url_for('.static',filename='500.jpg') }}">
7     </div>
8 </div>
9 {% endblock %}

{{ url_for('.static',filename='500.jpg') }}会去static文件夹下寻找500.jpg文件并显示在页面,url_for将链接到该文件所在地址http://127.0.0.1:5000/static/500.jpg

下面是我们的视图函数

 1 from flask import Flask, render_template
 2 from flask.ext.bootstrap import Bootstrap
 3 
 4 app = Flask(__name__)
 5 bootstrap = Bootstrap(app)
 6 
 7 
 8 @app.route("/")
 9 def index():
10     return render_template("boots.html")
11 
12 
13 @app.route("/hello/<user_name>")
14 def hello(user_name):
15     return render_template("boots.html", name=user_name)
16 
17 
18 @app.errorhandler(404)
19 def page_not_found(e):
20     return render_template("404.html"), 404
21 
22 
23 @app.errorhandler(500)
24 def internal_server_error(e):
25     return render_template("500.html"), 500
26 
27 
28 if __name__ == "__main__":
29     app.run()

@app.errorhandler(errcode)是错误处理装饰器,
对应视图函数的返回值处理模版渲染外,还包错误代码。

 

相关文章