• flask_context


    定义全局的钩子函数

    有的时候在处理请求之前和之后,执行某些特定的代码是很有用的,这就用到了请求钩子

    例如在请求之前创建数据库连接或者redis连接;或者是系统里面用户请求处理之前先验证用户的身份,是否激活,激活执行什么操作,没激活用户一直绑到固定页面去直到激活

    为了避免每个试图函数中都使用重复的代码,flask提供了注册通用函数的功能;

    也就是说只要写一个请求钩子-函数,整个程序实例全局都被应用了。

    例如:在所有请求之前先验证下用户的认证状态

    @before_app_request
    def before_request():
        if current_user.is_authenticated:
            current_user.ping()
            if not current_user.confirmed and request.endpoint[:5] != 'auth.' and request.endpoint != 'static':
                return redirect(url_for('auth.unconfirmed'))
    

    常见的4种钩子:

    before_first_request:注册一个函数,在处理第一个请求之前运行

    before_request:注册一个函数,每次请求之前运行

    after_request:注册一个函数,没有未处理的异常抛出,每次请求之后运行

    teardown_request:注册一个函数,有未处理的异常抛出,每次请求之后运行

    在请求钩子和视图函数之间共享数据一般使用程序上下文g;

    例如before_request处理程序可以从数据库中加载已登录用户,将其保存到g.user中,随后调用试图函数,试图函数再从g.user中获取用户

  • 相关阅读:
    软件工程作业-结对实验
    软件工程实践作业2
    UNIX线程之间的关系
    c中计时的几种方法
    调试器工作原理(3):调试信息
    调试器工作原理(2):实现断点
    调试器工作原理(1):基础篇
    linux的终端,网络虚拟终端,伪终端(转)
    asterisk webrtc使用SIPML5初体验
    初次使用nodejs的问题
  • 原文地址:https://www.cnblogs.com/shangpolu/p/7171320.html
Copyright © 2020-2023  润新知