zoukankan      html  css  js  c++  java
  • flask模板应用-自定义错误页面 --

    自定义错误页面


    当程序返回错误响应时,会渲染一个默认的错误页面,我们可以注册错误处理函数来处理错误页面

    错误处理函数和视图函数很相似,返回值将作为响应的主题,因此我们先要创建错误页面的模板文件。为了和普通模板区分开,我们在模板文件夹templates里建一个errors子文件夹,在其中为最常见的404和500错误创建模板文件

    404页面模板404.html
    1 {% extends 'base.html' %}
    2 {% block title %}404 -Page Not Found{% endblock %}
    3 {% block content %}
    4 <h1>Page Not Found</h1>
    5 <p>You are lost...</p>
    6 {% endblock %}

    错误处理函数需要附加app.errorhandler()装饰器,并传入错误状态码作为参数。错误处理函数,并在返回值中注明对应的HTTP状态码。当发生错误时,对应的错误处理函数会被调用,它的返回值会作为错误响应的主体。

    下面例子是用来捕捉404错误的错误处理器:

    1 #encoding=utf-8
    2 from flask import Flask,render_template
    3 
    4 app=Flask(__name__)
    5 
    6 @app.errorhandler(404)
    7 def page_not_found(e):
    8     return render_remplate('error/404.html'),404

    错误处理函数接收异常对象作为参数,内置的异常对象提供了下列常用属性,如:

    Werkzeug内置的HTTP异常类的常用属性:

    如果不想手动编写错误页面的内容,可以将这些信息传入错误页面模板,在模板中用它们来构建错误页面。不过需要注意的是,传入500错误处理器的真正的异常对象,通常不会提供这几个属性,你需要手动编写这些值。

    Flask通过抛出Werkzeug中定义的HTTP异常类来标识HTTP错误,错误处理函数接收的参数就是对应的异常类。基于这个原理,你可以使用app.errorhandler()装饰器为其他异常注册处理函数,并返回自定义响应,只需要在app.errorhandler()装饰器中传入对应的异常类即可。比如使用app.errorhandler(NameError)可以注册处理NameError异常的函数。

    这时如果访问一个错误的URL(127.0.0.1:5000/wwww),就会看到这样的错误页面

    对应代码,app.py
     1 #encoding=utf-8
     2 from flask import Flask,render_template
     3 
     4 app=Flask(__name__)
     5 
     6 @app.errorhandler(404)
     7 def page_not_found(e):
     8     return render_template('errors/404.html'),404
     9 
    10 @app.route('/')
    11 def index():
    12     return render_template('index.html')
    13 
    14 if __name__ == '__main__':
    15     app.run(debug = True)
  • 相关阅读:
    006-STM32+BC26基本控制篇-基础应用-域名申请SSL证书
    005-STM32+BC26基本控制篇-基础应用-域名备案
    004-STM32+BC26基本控制篇-基础应用-购买域名,配置域名解析
    003-STM32+BC26基本控制篇-基础应用-安装Web服务器软件Nginx(.Windows系统)
    002-STM32+BC26基本控制篇-基础应用-测试APP扫码绑定BC26模组并实现APP和开发板之间通过MQTT进行远程通信控制
    Spark实战(六)spark SQL + hive(Python版)
    Spark实战(五)spark streaming + flume(Python版)
    Spark实战(二)Spark常用算子
    Spark面试常见问题(一)--RDD基础
    Spark实战(三)本地连接远程Spark(Python环境)
  • 原文地址:https://www.cnblogs.com/xiaxiaoxu/p/10468139.html
Copyright © 2011-2022 走看看