【Flask】4个session(一)状态保持及请求/应用向下文

版权声明:欢迎交流,转载请注明出处。 https://blog.csdn.net/u013034226/article/details/83658190

1.状态保持
▪▪▪▪无状态:
因为 http 是一种无状态协议,浏览器请求服务器是无状态的,指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。
无状态原因:浏览器与服务器是使用 socket 套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的 socket 连接,而且服务器也会在处理页面完毕之后销毁页面对象。
▪▪▪▪状态保持:
有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等
实现状态保持主要有两种方式:使用Cookie在客户端存储信息,使用Session在服务器端存储信息
1.1.Cookie:
▪Cookie是由服务器端生成,发送给客户端浏览器,浏览器会将Cookie的key/value保存,下次请求同一网站时就发送该Cookie给服务器(前提是浏览器设置为启用cookie)。
▪应用:最典型的应用是判定注册用户是否已经登录网站,用户可能会得到提示,是否在下一次进入此网站时保留用户信息以便简化登录手续,这些都是Cookie的功用。
▪提示:Cookie基于域名安全,不同域名的Cookie是不能互相访问的
如:访问jingdong.com时向浏览器中写了Cookie信息,使用同一浏览器访问baidu.com时,无法访问到jingdong.com写的Cookie信息,浏览器的同源策略
1.2.session:
对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息,在服务器端进行状态保持的方案就是Session,Session依赖于Cookie


2.上下文
相当于一个容器,保存了 Flask 程序运行过程中的一些信息,Flask中有两种上下文,请求上下文和应用上下文
2.1.请求上下文
请求上下文对象有:request、session

通俗理解就是,session和request平级,但request针对的是http请求,session针对的是回话中的用户信息。地位相同,职责不同。


2.1.1request
在 flask 中,可以直接在视图函数中使用 request 这个对象进行获取相关数据,而 request 就是请求上下文的对象,保存了当前本次请求的相关数据,封装了HTTP请求的内容,针对的是http请求。
举例:user = request.args.get('user')

属性 说明 类型
form 记录请求中的表单数据 MultiDict
args 记录请求中的查询参数 MultiDict
method 记录请求使用的HTTP方法 GET/POST
url  记录请求的URL地址 string
files 记录请求上传的文件   *

2.1.2.session

用来记录请求会话中的信息,针对的是用户信息。举例:session['name'] = user.id,可以记录用户信息。还可以通过session.get('name')获取用户信息,session.pop('user_id')删除用户信息。

2.2.应用上下文

它不是一直存在的,它只是request context 中的一个对 app 的代理(人),它的作用主要是帮助 request 获取当前的应用,它是伴 request 而生,随 request 而灭的。应用上下文对象有:current_app,g

2.2.1.current_app

应用程序上下文,用于存储应用程序中的变量,可以通过current_app.name打印当前app的名称,也可以在current_app中存储一些变量,例如:

应用的启动脚本是哪个文件,启动时指定了哪些参数

加载了哪些配置文件,导入了哪些配置

连了哪个数据库

应用跑再哪个机器上,IP多少,内存多大

2.2.2.g

g 作为 flask 程序全局的一个临时变量,充当者中间媒介的作用,我们可以通过它传递一些数据,g 保存的是当前请求的全局变量,不同的请求会有不同的全局变量,通过不同的thread id区别。

猜你喜欢

转载自blog.csdn.net/u013034226/article/details/83658190