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

  • 相关阅读:
    xxl-job 使用相关
    Kettle 使用相关
    C# 调用 WinApi 中 ShellExecute 打开 Excel 的方法
    SQL Server 日志文件清理
    windows远程桌面无法粘贴复制的解决方法
    大数据、业务多元化将是商业银行未来的发展趋势
    TeraData金融数据模型
    整理ORACLE数据库备份常用术语
    ORACLE恢复神器之ODU/AUL/DUL
    ORACLE之UTL_FILE包详解
  • 原文地址:https://www.cnblogs.com/XuChengNotes/p/12149308.html
Copyright © 2011-2022 走看看