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

  1. 未出异常
# -*- 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

  1. 未出异常
# -*- 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所有都执行

 

posted @ 2022-03-24 21:36  甜甜de微笑  阅读(38)  评论(0编辑  收藏  举报