文章目录

  • 一、四种请求勾子
  • 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=’张三’