flask的请求扩展
1 概念
flask请求扩展类似于django中的中间件
2 before_request
@app.before_request
def before():
# 当次请求对象是request
# 1 判断访问的不同路径
if request.path=='/':
print('来了')
else:
print('访问其他路径')
# 2 判断:如果是根路径,向request对象中放个name,如果不是,则不放
if request.path=='/':
request.name='拿取'
else:
print('访问其他路径')
# 3 返回none,会执行下一个请求扩展,如果返回四件套,就直接返回,不再往下执行
if request.path=='/':
return '访问不存在'
else:
print('访问其他路径')
#4 多个before_request,由上而下执行
@app.before_request
def before1():
print('111')
@app.before_request
def before2():
print('222')
@app.route('/')
def jinx():
# print(request.name)
return 'aaa'
@app.route('/index')
def index():
# print(request.name) # 没有放入,走此路由会报错
return 'bbb'
3 after_request
# after_request
@app.after_request
def after(response):
print(response) # 正常响应对象
print('leave')
# 1 用处:处理跨域
response.headers['xxx']='aaaa'
# 2 多个before_request和 after_request执行顺序:
# 请求来了,从上往下执行before_request,请求走了,从下往上执行after_request
return response # 一定要返回response
@app.route('/')
def jinx():
# print(request.name)
return 'aaa'
@app.route('/index')
def index():
# print(request.name) # 没有放入,走此路由会报错
return 'bbb'