请求扩展

一、before_request

类比django中间件中的process_request,在请求收到之前绑定一个函数做一些事情

#基于它做用户登录认证
@app.before_request
def process_request(*args,**kwargs):
    if request.path == '/login':
        return None
    user = session.get('user_info')
    if user:
        return None
    return redirect('/login')

二、after_request

类比django中间件中的process_response,每一个请求之后绑定一个函数,如果请求没有异常

@app.after_request
def process_response1(response):
    print('process_response1 走了')
    return response

三、befor_first_request

第一次请求时,跟浏览器无关

@app.before_first_request
def first():
    pass

四、teardown_request

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

@app.teardown_request 
def ter(e):
    pass

五、errorhandler

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

@app.errorhandler(404)
def error_404(arg):
    return "404错误了"

六、template_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)}}

八、总结

1 重点掌握before_request和after_request,

2 注意有多个的情况,执行顺序

3 before_request请求拦截后(也就是有return值),response所有都执行

 

 

 

 

 

posted on 2019-11-10 10:50  软饭攻城狮  阅读(90)  评论(0编辑  收藏  举报

导航