flask学习笔记3-flask上下文和请求钩子

1. 请求上下文

1.1 request请求上下文

request请求体上下文在django和flask的视图函数中是有区别的

django视图函数中要填写request请求体,每个客户端的请求是很明确的

flask中的request是一个全局变量,每个client请求都是一个flask线程,多个请求的多个线程都可以使用全局的request。这是通过线程id去区分具体是哪一个client连接,每进来一个新的请求,flask会把新的请求信息带上线程id 加入到全局的request中

1.2 session上下文

笔记中的session其实也是一种请求上下文


2. 应用上下文:current_app和g

current_app和g都属于应用上下文对象

区别:

current_app:表示当前运行程序文件的程序实例,只要flask后台程序不停止,都一直存在

g:处理单个请求时,用于临时存储的对象,每次请求都会重设(清空)这个变量,相当于单词请求的全局变量。方便函数之间少传递参数


3. 请求钩子

request hook是针对单个请求的生命周期而言的,通过装饰器实现

@app.before_first_request()

@app.before_request()

@app.after_request(response)

@app.teardown_request(response) 工作在debug = False时生效

示例代码一
接示例代码一

request hook 默认会在页面的所有视图中都生效,作用于单次请求,如果只是应用到多个视图的某一个或一些视图上,需要在钩子函数中做条件判断:

示例代码二

你可能感兴趣的:(flask学习笔记3-flask上下文和请求钩子)