1,什么是钩子函数?

就是运行别人前都得先运行他:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
return 'Hello World!' @app.before_request
def bf():
print("运行任何程序前都要先运行我,哈哈!") if __name__ == '__main__':
app.run()

2,应用在哪?

比如在网站中检查是否为登陆状态,否则应跳转到登陆界面:

from flask import Flask,render_template,g,url_for,request,redirect,session
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24) @app.route('/')
def hello_world():
# print("index")
return 'index!' @app.route('/login/' ,methods=['GET','POST'])
def login():
# print("login")
if request.method == "GET":
return render_template('login.html')
else:
username = request.form.get('username')
password = request.form.get('password')
if username == "1" and password == "1":
session['username'] = "1"
return 'Success to login in!'
else:
return redirect(url_for('login')) @app.route('/edit/')
def edit():
##1和 #2都是一样的意思,但是1更方便,hasattr() 函数用于判断对象是否包含对应的属性。
if hasattr(g,'username'): #1
# if session.get('username') == "1": #2
return 'success to edit'
else:
return redirect(url_for('login')) # before_request:在请求之前执行的,在视图函数执行之前执行的。
# before_request只是一个装饰器,他可把要设置为钩子函数的代码放到视图函数执行之前来执行。
@app.before_request
def my_before_request():
print('hw')
# 有username证明用户是登陆状态
if session.get('username'):
g.username = session.get('username') #g?
# 相当于在每一个视图函数(如‘/’,/login/执行前都会执行这个函数。) if __name__ == '__main__':
app.run()

10before_request钩子函数的更多相关文章

  1. Vue2.X的路由管理记录之 钩子函数(切割流水线)

    $route可以在子组件任何地方调用,代表当前路由对象,这个属性是只读的,里面的属性是 immutable(不可变) 的,不过你可以 watch(监测变化) 它. 导航和钩子函数: 导航:路由正在发生 ...

  2. 【Mocha.js 101】钩子函数

    前情提要 在上一篇文章<[Mocha.js 101]同步.异步与 Promise>中,我们学会了如何对同步方法.异步回调方法以及 Promise 进行测试. 在本篇文章中,我们将了解到 M ...

  3. wordpress钩子和钩子函数

    ccc,看了很多博客,无法理解,还是自己来写吧. wordpress 在wordpress中有很多钩子,还有很多钩子函数,在什么地方用什么钩子,用什么钩子函数, 需要明白两个问题: 1:什么是钩子,钩 ...

  4. 使用PreTranslateMessage替代钩子函数处理键盘消息

    2002年左右,我所在公司在开发基于H.323的VoIP电话系统(用了以色列一家公司的库,具体名字忘记了). 去电信科技研究院测试系统,同事发现处理键盘消息总有一些莫名其妙的问题,比如延迟或异常. 我 ...

  5. 10.PHP内核探索:Apache运行与钩子函数

    Apache是目前世界上使用最为广泛的一种Web Server,它以跨平台.高效和稳定而闻名.按照去年官方统计的数据,Apache服务器的装机量占该市场60%以上的份额.尤其是在 X(Unix/Lin ...

  6. 对于数据包的截取,使用linux中的netfilter钩子函数

    http://blog.csdn.net/wswifth/article/details/5115358 在师哥的代码(packet.c)中使用的是Linux2.4内核中的一个子系统:netfilte ...

  7. 黄聪:WordPress动作钩子函数add_action()、do_action()源码解析

    WordPress常用两种钩子,过滤钩子和动作钩子.过滤钩子相关函数及源码分析在上篇文章中完成,本篇主要分析动作钩子源码. 然而,在了解了动作钩子的源码后你会发现,动作钩子核心代码竟然跟过滤钩子差不多 ...

  8. 利用钩子函数来捕捉键盘响应的windows应用程序

    一:引言: 你也许一直对金山词霸的屏幕抓词的实现原理感到困惑,你也许希望将你的键盘,鼠标的活动适时的记录下来,甚至你想知道木马在windows操作系统是怎样进行木马dll的加载的…..其实这些都是用到 ...

  9. php 钩子函数原理 解析

    目前对钩子的理解:<转载:http://www.cnblogs.com/del/archive/2008/02/25/1080825.html> 譬如我们用鼠标在某个窗口上双击了一次, 或 ...

随机推荐

  1. 联赛模拟测试12 B. trade

    题目描述 分析 \(n^2\) 的 \(dp\) 应该比较好想 设 \(f[i][j]\) 为当前在第 \(i\) 天剩余的货物数量为 \(j\) 时的最大收益 那么它可以由 \(f[i-1][j]\ ...

  2. FRP服务

    FRP服务 - Web服务 本服务提供Web内网穿透服务,并且开放端口 443和 80端口. 写在前面:提供公益FRP服务器:frp.dev.boselor.com,服务器在洛杉矶但是请勿用于违法用途 ...

  3. js获取页面高度

    <script> function getInfo() { var s = ""; s += " 网页可见区域宽:"+ document.body. ...

  4. C++ 设置软件激活不息屏

    SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED);

  5. Vue3: 如何以 Vite 创建,以 Vue Router, Vuex, Ant Design 开始应用

    本文代码: https://github.com/ikuokuo/start-vue3 在线演示: https://ikuokuo.github.io/start-vue3/ Vite 创建 Vue ...

  6. Afinal简介和使用方法

    Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitm ...

  7. poj1050 To the Max(降维dp)

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49351   Accepted: 26142 Desc ...

  8. 小白也能看懂的JVM内存区域

    前言 最近在准备面试题刷到了JVM这块,作为一个小白,巩固知识点最好的方式就是亲手写出来并分享:相信我的理解,同样是小白的你,一定有很大的帮助.不信,请你往下看! JVM内存区域简介 如果有人问Jav ...

  9. 常用的Css函数

    1. attr() 用来选择元素的属性值,用法:attr(html元素的属性名),正常搭配css content一起使用 html: <p><a href="http:// ...

  10. Spring Boot 加载application.properties顺序

    1.准备四份application.properties a.项目根目录下config/application.properties ,内容为:  test.user.name = a b.项目根目录 ...