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




    
    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所有都执行