zoukankan      html  css  js  c++  java
  • flask之请求扩展

    请求扩展

    1 before_request

    可以多个请求之前的函数
    执行顺序是谁在前面谁先执行
    如果前面的before_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')
    
    @app.before_request
    def sb():
        print(request)
        print("我是请求之前")
        return "我是请求之前1的返回"
    
    # 上面有返回值,后面的都不会执行
    @app.before_request
    def  sb1():
        print("我是请求之前2")
        #return "我是请求之前2的返回"
    

    2 after_request

    可以在请求之后添加多个after_request
    执行顺序是谁在前面谁后执行
    before_request对我的after_request没有影响,有没有返回值都会执行
    
    @app.after_request
    def process_response1(response):
        print('process_response1 走了')
        return response
    
    @app.after_request
    def process_response2(response):
        print('process_response2 走了')
        return response
    

    3 before_first_request

    '''
    项目启动后的第一次访问
    '''
    @app.before_first_request
    def first():
        print("我的第一次")
    

    4 teardown_request

    '''
    无论有没有异常都会执行,有异常会把异常传递进来
    '''
    @app.teardown_request 
    def ter(e):
        print(e)
        print("我是异常")
    

    5 errorhandler

    '''
    @app.errorhandler(要捕获的错误码)
    '''
    @app.errorhandler(404)
    def error_404(arg):
        return "404错误了"
    

    6 template_global

    标签

    @app.template_global()
    def sb(a1, a2):
        return a1 + a2
    '''
    在模板中直接使用该函数就可以了,不需要返回模板并传参
    '''
    #{{sb(1,2)}}
    

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

  • 相关阅读:
    outlook 2007无法连接exchange server时的解决方法
    Source模式和Design模式无法转换 在VS2008
    自定义CreateUserWizard 控件
    自定义CreateUserWizard 控件
    锋利的jQuery第三章
    Repeater控件的ItemDataBound事件
    jquery获取select,option所有的value和text
    Jquery中的缩写总结
    asp.net本质论学习笔记第二章
    jquery的append函数
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/12149308.html
Copyright © 2011-2022 走看看