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中获取用户

  • 相关阅读:
    hdu5360 Hiking(水题)
    hdu5348 MZL's endless loop(欧拉回路)
    hdu5351 MZL's Border(规律题,java)
    hdu5347 MZL's chemistry(打表)
    hdu5344 MZL's xor(水题)
    hdu5338 ZZX and Permutations(贪心、线段树)
    hdu 5325 Crazy Bobo (树形dp)
    hdu5323 Solve this interesting problem(爆搜)
    hdu5322 Hope(dp)
    Lightoj1009 Back to Underworld(带权并查集)
  • 原文地址:https://www.cnblogs.com/shangpolu/p/7171320.html
Copyright © 2011-2022 走看看