Falsk五

发布时间 2023-11-20 17:04:23作者: 别管鱼油我了

请求扩展

before_request:请求来了会走,依次从上往下执行,但是如果其中一个返回了响应对象,后续就不走了,视图函数也不走

after_request:  请求走了,会从下往上依次执行,必须返回相应对象

假设:

  写了3个before_request   第二个返回了响应对象

  写了3个after_request  所有的after_request都会执行,从下往上

使用场景:

  before_request 做一些拦截,判断

    比较校验请求头中是否带token,user-agent

  after_request在响应中加入

    响应头中

    响应cookie

    修改相应体

before_first_request 老版本:新版本没有了,项目启动后第一次执行,后面就再不执行了

teardown_request

每个请求之后绑定一个函数,即使遇到异常

@app.teardown_request
def lqz(err):
    print(err) # 如果视图函数正常顺利运行,err是None的,如果视图函数出错了,err就是错误对象,一般用来做日志记录
    print('teardown_request')

 

errorhandler

路径不存在时404,服务器内部错误500

@app.errorhandler(404)  # 路径不存在
def error(arg):
    print('xxx')
    print(arg)
    return render_template('404.html')
@app.errorhandler(500)  # 服务器内部错误
def error(arg):
    return render_template('500.html')

 

标签:

temple_global

@app.template_global()
def sb(a1, a2):
    return a1 + a2
#{{sb(1,2)}}

 

过滤器:

template_filter

@app.template_filter()
def db(a1, a2, a3):
    return a1 + a2 + a3
#{{ 1|db(2,3)}}

 

蓝图

blueprint 翻译过来的:flask是要做成项目,放到多个文件夹中,使用蓝图划分目录

不使用蓝图划分目录: