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>