17 flask之请求扩展
1 before_first_request
服务一启动,第一次请求会走,以后再也不走了
# -*- coding: utf-8 -*-
# @Time : 2021/12/13 20:53
# @Author : dzg
from flask import Flask
app = Flask(__name__)
@app.before_first_request
def first():
print('我的第一次')
@app.route('/')
def index():
print('index')
return 'ok'
if __name__ == '__main__':
app.run()
2 teardown_request
无论如何都会走,即使出了异常
注意:app.debug = False才会走
案例1:app.debug = True
- 未出异常
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask app = Flask(__name__) app.debug = True @app.teardown_request def ter(e): print(e) print('无论如何都会走,即使出了异常') @app.route('/') def index(): print('index') return 'ok' if __name__ == '__main__': app.run()
2. 出异常
案例2:app.debug = False
- 未出异常
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask app = Flask(__name__) app.debug = False @app.teardown_request def ter(e): print(e) print('无论如何都会走,即使出了异常') @app.route('/') def index(): print('index') return 'ok' if __name__ == '__main__': app.run()
2.出异常
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask app = Flask(__name__) app.debug = False @app.teardown_request def ter(e): print(e) print('无论如何都会走,即使出了异常') @app.route('/') def index(): print('index') a return 'ok' if __name__ == '__main__': app.run()
3 errorhandler
- 路径不存在时404
- 服务器内部错误500
案例1:路径不存在时404
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask app = Flask(__name__) @app.errorhandler(404) def error_404(arg): print(arg) return "你迷路了----》404" @app.route('/') def index(): print('index') return 'ok' if __name__ == '__main__': app.run()
案例2:服务器内部错误500
# -*- coding: utf-8 -*-
# @Time : 2021/12/13 20:53
# @Author : dzg
from flask import Flask
app = Flask(__name__)
@app.errorhandler(500)
def error_500(arg):
print(arg)
return "请稍后再试"
@app.route('/')
def index():
print('index')
a
return 'ok'
if __name__ == '__main__':
app.run()
4 标签:template_global
main.py
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask, render_template app = Flask(__name__) @app.template_global() def dzg(a1, a2): return a1 + a2 @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run()
index.html
Title
{{dzg(1,2)}}
5 过滤器:template_filter
main.py
# -*- coding: utf-8 -*- # @Time : 2021/12/13 20:53 # @Author : dzg from flask import Flask, render_template app = Flask(__name__) @app.template_filter() def dzg(a1, a2, a3): return a1 + a2 + a3 @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': app.run()
index.html
Title {{1|dzg(2,3)}}
6 总结
1 重点掌握before_request和after_request,
2 注意有多个的情况,执行顺序
3 before_request请求拦截后(也就是有return值),response所有都执行