文章目录
- 一、四种请求勾子
- 1、before_first_request
- 2、before_request
- 3、after_request
- 4、teardown_request
- 二、状态保持
- 1、cookie
- 读取 cookie
- 设置cookie
- 删除cookie
- 2、session
- 三、上下文
- 1、请求上下文
- 请求上下文对象:
- Request:封装的是http请求的内容
- Session:记录当前会话的信息,用来保存用户的信息
- 2、应用上下文
- current_app
- g变量
一、四种请求勾子
1、before_first_request
@app.before_first_request
def before_first_request():
print('第一次请求钩子')
功能:
1、 在处理第一次请求前执行
2、 利用:进行数据库的连接操作
2、before_request
@app.before_request
def before_request():
print('请求时调用')
注意点:
1、 在每一次请求调用之前运行
2、 在调用的时候不需要传递参数
3、 如果它有一个非空的返回值,那么返回值会被当做响应,之后请求将不再进入视图进行处理
4、 运用
a) 数据库连接
b) 在session中下载用户的相关信息
3、after_request
@app.after_request
def after_request(param):
print('每次视图处理完成后调用')
print(param)#响应对象
return param
注意点:
1、 在每一次请求调用之后运行
2、 在调用的过程中需要传递参数,参数是一个相应对象
3、 必须要有返回值,返回值也是一个响应对象,可处理可不处理
4、teardown_request
@app.teardown_request
def teardown_request(e):
print("teardown_request")
请每一次请求之后都会调用,会接受一个参数,参数是服务器出现的错误信息
二、状态保持
1、cookie
读取 cookie
from flask import request
@app.route('/getcookie')
def getcookie():
print('###',request.cookies)
return '取出cookie'
设置cookie
from flask import make_response
@app.route('/cookie')
def cookie():
response=make_response('ok')
response.set_cookie('username','tom')
return response
删除cookie
from flask import make_response
@app.route('/delete')
def delete_cookie():
response = make_response('delete')
response.delete_cookie('name')
return response
2、session
生成session
app=Flask(__name__)
app.secret_key='saghabfhbad'#随机密匙,可以随意编写,也可以使用调用某方法生成
@app.route('/getinfo')
def getinfo():
return session.get('college')
@app.route('/')
def index():
session['college']='大学'
return 'ok'
if __name__='__main__':
app.run(debug=True)
注意点:
1、 session是依赖于cookie的
2、 session在使用的过程中,必须要指定secret_key
三、上下文
相当于容器,保存了一些程序运行时需要的信息
1、请求上下文
保存的是客户端与服务端交互的数据,用来获取地址,请求方式,cookie等相关的工作
请求上下文对象:
Request:封装的是http请求的内容
针对的时http请求,举例:user = request.args.get(‘user’),获取的是get请求的参数
Session:记录当前会话的信息,用来保存用户的信息
针对的是用户信息。举例:session[‘name’] = user.id,可以记录用户信息。还可以通过session.get(‘name’)获取用户信息
2、应用上下文
程序运行的时候,保存的数据信息,如程序名、数据库连接、应用信息等
主要是用来帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的
current_app
存储变量:
1、 加载的配置文件
2、 连接了哪些数据库
3、 运行在哪个机器上,ip是多少
4、 等
如current_app.name打印当前app的名称
g变量
Flask程序全局的一个临时变量,充当中间人的作用
它是当前请求的全局变量,可以传递一些数据,不同的请求会有不同的全局变量,通过不同的thread id区别
g.name=’张三’