flask的异常处理(errorhandler),template_global,以及过滤(template_filter)

flask的异常处理(errorhandler),template_global,以及过滤(template_filter)

from flask import Flask, request, render_template

app = Flask(__name__)


# teardown_request,一旦遇到错误就会执行,并且把错误信息传递给teardown_request装饰的函数
# 没有错误也会执行,但是错误为none
# @app.teardown_request
# def tear(e):
#     print(e)
#     print('我是teardown_request')
#


# errorhandle 可以捕获错误,并且对错误做出响应,返回给用户,如果你要用errorhandler你必须指定他是谁
# 捕获那种类型的错误,就必须传错误,然后做返回值,返回给用户

@app.errorhandler(500)
def error_500(e):
    print(e)
    return '我程序崩了,你下次来吧'


@app.errorhandler(404)
def error_404(e):
    print(e)
    return render_template('404.html')

# 相当于django中的标签,通过他我们就可以不用再响应函数中传,直接在HTML中把global的函数名写上即可
@app.template_global()
def get_sb(a1, a2):
    return a1 + a2

# django中的过滤器,第一个参数是你要过滤的那个值(自身)
@app.template_filter()
def get_something(a1, a2, a3, a4): # 不同于django的过滤器只能接受2个这里可以接受多个参数
    return a1+a2+a3+a4


@app.route('/')
def index():
    print('我是响应函数')
    # 不用template_global的写法
    # return render_template('index.html', sb=get_sb)
    # 用template_global的写法
    return render_template('index.html')


if __name__ == '__main__':
    app.run()


index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>


</head>
<body>

{{get_sb(1,2)}}

{{1|get_something(2,3,4)}}
</body>
</html>

404.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>


</head>
<body>
<h1>不要乱访问,不然下次看到的还是我</h1>

</body>
</html>

posted @ 2020-03-19 18:54  alen_zhan  阅读(558)  评论(0编辑  收藏  举报
返回顶部