Flask开发(十八)Flask数据交互 钩子函数的使用

内容纲要

本篇导读:

  • 钩子函数概念
  • 常用钩子函数的使用

钩子函数的概念

根据需要,有时需要在正常执行代码的前、中、后期,强行执行一段我们想要执行的功能代码,实现这种功能的函数,就成为钩子函数。钩子函数的实质就是用特定装饰器装饰的函数。

常用的钩子函数

(1)before_first_request()函数

before_first_request()的中文意思为“处理第一次请求之前”,他实际指定的是在第一次执行请求之前可以执行的函数。该函数只会执行一次,以后就不会执行了。

(2)before_request()函数

before_request()函数表示的每一次请求之前可以执行某个特定功能的函数。一般可以用来检验用户请求是否合法、权限检查等场景。该函数每次请求之前都会被执行。

(3)after_request()函数

after_request()函数表示的每一次请求之后可以执行某个特定功能的函数。一般可以用来产生csrf_token验证码等场景。该函数要求必须给出响应对象。

(4)teardown_request()函数

teardown_request()函数表示的是每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息。

下面通过一个例子来说明:

from flask import Flask
import time

app = Flask(__name__)

@app.before_first_request
def before_first_request():
    print('这是before_first_request函数')

@app.before_request    
def before_request():
    print('这是before_request函数')
    
@app.after_request
def after_request(respone):
    print('这是after_request函数')
    respone.headers["Content-Type"] = 'application/json'
    return respone
    
@app.teardown_request
def teardown_request(e):
    print('这是teardown_request函数')

@app.route('/')
def hello_world():
    print('您访问了首页')
    time.sleep(5)
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

运行效果:

 

[successbox title="本篇习题"]

1.创建一个项目,实现文件的上传,上传目录可以自动创建,上传的文件目录为images,可以允许上传的文件类型为.jpg和.gif。

2.创建一个用户登录程序,用户名为admin,密码为123456,登录表单要求开启CSRF保护,使用Session保存登录用户名,保存期限为10天。

[/successbox]

 

阅读剩余
THE END