zoukankan      html  css  js  c++  java
  • 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中获取用户

  • 相关阅读:
    图->存储结构->十字链表
    图->存储结构->邻接表
    P2278-[HNOI2003]操作系统
    P1801-黑匣子_NOI导刊2010提高(06)
    P1197-[JSOI2008]星球大战
    P2024- [NOI2001]食物链
    P1111-修复公路
    ACM模板——二分图匹配
    P2055-[ZJOI2009]假期的宿舍
    ACM模板——强连通分量
  • 原文地址:https://www.cnblogs.com/shangpolu/p/7171320.html
Copyright © 2011-2022 走看看