本文共 1929 字,大约阅读时间需要 6 分钟。
—————————————————————————前言——————————————————————————
像常规路由一样, Flask允许程序使用基于模板的自定义错误页面。
——————————————————————————————————————————————————————
最常见的错误代码有两个:
1. 404, 客户端请求未知页面时显示
2. 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和视图函数一样, 错误处理程序也会返回响应和数字状态码。
上节我们讲到Flask-Bootstrap提供的基模板, 我们很容易想到, 只要把user.html的模板内容复制过来, 然后改一下页面内容不就行了, 这样确实可以达到目的, 但是所有模板都有重复的导航条代码不是一个好选择, 我们可以利用模板继承自己写一个带有导航条的基模板, 然后让所有模板继承这个基模板, 这样就可以达到简化模板的目的:
#templates/base.html: 包含导航条的程序基模板{% extends 'bootstrap/base.html' %}{% block title %}Flasky{% endblock %}{% block navbar %}不难看出,该模板继承了bootstrap提供的基模板, 而且定义了标题和导航条, 它的所有衍生模板都会有相同的标题和导航条,唯一不同的就是content块中只有一个div容器, 里面是一个page-content块, 块中的内容由衍生模板来定义。 {% endblock %}{% block content %}{% block page_content %}{% endblock %}{% endblock %}
#然后我们来写上面基模板的衍生模板404.html{% extends "base.html" %}{% block title %}Flasky - Page Not Found{% endblock %}{% blcok page-content %}Not Found
{% endblock %}#利用基模板改写user.html:{% extends "base.html" %}{% block page-content %}{% endblock %}Hello, { { name }!
1.先进入flasky文件夹
2. 激活虚拟环境(不影响迁出版本, 安装拓展和运行服务器时一定不可省略该步)
3.迁出3c版本, 失败, 原因是之前修改了hello.py文件, 解决方法: git reset --hard 然后再迁即可。
迁出3c版本templates文件夹的前后变化:
迁出前:
迁出后:
主要变化的多了一个base.html文件, 该文件就是上面我们改写的基模板, 然后其他模板都是该基模板的衍生模板, 这个基模板帮助我们大大简化了模板的代码量。
2)运行效果图:
改图提示flask.ext.script已经过期, 我们应该从flask_script中导入Manager, 所以以后初始化扩展包, 我们应该从flask_xxx中导入类。
输入不存在的地址: