17 flask之請求擴充套件
阿新 • • 發佈:2022-03-24
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{dzg(1,2)}}
</body>
</html>
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
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> {{1|dzg(2,3)}} </body> </html>
6 總結
1 重點掌握before_request和after_request,
2 注意有多個的情況,執行順序
3 before_request請求攔截後(也就是有return值),response所有都執行