python web开发-flask中response,cookies,session对象使用详解
Response响应对象:
当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式
- 如果返回的是一个合法的响应对象,它会从视图直接返回。
- 如果返回的是一个字符串,响应对象会用字符串数据和默认参数创建。
- 如果返回的是一个元组,且元组中的元素可以提供额外的信息。这样的元组必须是(response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。
- 如果上述条件均不满足, Flask 会假设返回值是一个合法的 WSGI 应用程序,并转换为一个请求对象。
以上从引用官网的一段话,其实简单来说就是所有的响应都会生成一个合法的响应对象,我们平常用的最多的就是直接返回字符串或是返回一个template。最终都会被flask处理成response对象。
Cookies对象:
Cookies用于在客户端存储一些信息, 当flask应用响应用户请求时可以设置cookies的值,当用户请求flask应用时可以获取cookies的值。
简单来说,设置cookies的方式为:
responseObj.set_cookies(“xxx”) ,此处的responseObj是一个response的实例,xxx是cookies的名称
获取cookies的方式为
request.cookies.get(“xxx”),此处的request是全局request对象,xxx是cookies的名称
下面通过一个例子来说明cookies的使用
- 创建一个设置cookies的方法:
@app.route("/setCookies")
def setCookies():
res = make_response("this page will set a cookies")
res.set_cookie("myCookies","my first cookies")
return res
注:需要import make_response方法
2. 创建一个获取cookies的方法
@app.route("/getCookies")
def getCookies():
myCookies = request.cookies.get("myCookies")
return myCookies
3. 测试应用
访问 /setCookies 方法

访问/getCookies方法

Session对象:
它允许你在不同请求间存储特定用户的信息。它是在 Cookies 的基础上实现的,并且对 Cookies 进行密钥签名。这意味着用户可以查看你 Cookie 的内容,但却不能修改它,除非用户知道签名的密钥。
Session可以通过session[‘xxx’]=’yyy’进行设置,其中xxx是key值,yyy是session的value。
通过session.pop(‘xxx’,none)把key是xxx的session移除
一般用session进行用户是否登录的验证
下面举例来说明:
- 设置session
使用下面的代码
@app.route("/setSession")
def setSession():
session["userName"] = "my session"
return session["userName"]
使用session时要先设置app_secret不然会报错:
RuntimeError: The session is unavailable because no secret key was set. Set the secret_key on the application to something unique and secret.
在调用此代码之前加上secret_key的设置
app.secret_key = "1234"
安全起见,secret_key要设置的复杂一些,这里演示用就简单设置了。
2. 验证session
代码如下:
@app.route("/checkSession")
def checkSession():
if "userName" in session:
return "userName exist"
else:
return "userName lost"
3. 移除session
代码如下:
@app.route("/removeSession")
def removeSession():
session.pop("userName",None)
return "remove session!"
- 验证
访问/setSession

验证session 访问/checkSession

证明session存在
下一步,移除session

然后我们再次验证session。

Session已丢失
python web开发-flask中response,cookies,session对象使用详解的更多相关文章
- python web开发-flask中日志的使用
Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...
- python web开发-flask中sqlalchemy的使用
SqlAlchemy是一个python的ORM框架. 在flask中有一个flask-sqlalchemy的扩展,使用起来很方便. 1. 创建一个sqlalchemy的Model模块 创建 ...
- python web开发-flask中消息闪现flash的应用
Flash中的消息闪现,在官方的解释是用来给用户做出反馈.不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻 ...
- python web开发-flask中的url带斜线和不带斜线区别详解
通过flask进行路由配置的时候,有一个细节,就是同样的url,带上"/"和不带"/"有什么区别. 举例说明: 比如有个url,名字为"/url&qu ...
- hibernate的事务管理和session对象的详解
//开启事务 transaction=session.beginTransaction(); 上面为开启事务 transaction.commit();这个为提交事务 从session对象中获取事务后 ...
- python web开发-flask访问请求数据request
Request对象在web应用的开发中是一个非常重要的对象,主要用来获取用户发来的请求数据. 常用属性参考:http://docs.jinkan.org/docs/flask/api.html#fla ...
- python web开发-flask连接sqlite数据库
在之前的文章中我们介绍了如何在centOS中安装sqlite数据库. Sqlite安装完成后,本节就用flask来连接和操作sqlite数据库. 1. 数据准备 先在sqlite3中创建一 ...
- python web开发-flask读取txt文件内容
某些情况下,需要读取flask网站要目录下的txt文件.但是直接在flask网站的目录下创建一个文件是无法访问的.从网站找了一些资料,最终发现通过写一个方法返回txt内容比较简单方便,不过此方法适用于 ...
- python web开发flask框架 安装与环境
# encoding:utf-8 # 从flask这个框架中导入Flask这个类 from flask import Flask # 初始化一个Flask对象 # Flasks() # 需要传递一个参 ...
随机推荐
- 内置函数 -- filter 和 map
参考地址:http://www.cnblogs.com/sesshoumaru/p/6000788.html 英文文档: filter(function, iterable) Construct an ...
- orcale和hive常用函数对照表(?代表未证实)
函数分类 oracle hive 说明 字符函数 upper('coolszy') upper(string A) ucase(string A) 将文本字符串转换成字母全部大写形式 lower('K ...
- 深刻理解iosBlock
深刻理解iosBlock ///一个控制器里的方法 - (void)setRefreshHeader { ACWeakSelf(self); self.tableView.mj_header = [M ...
- redis 突然大量逐出导致读写请求block
现象 redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请求,导致 redis 短时间不可用: 背景 redis 中的LRU是如何实现的? 当mem_used ...
- Jenkins+Gradle实现android开发持续集成、打包
Jenkins简介 Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时 Jenkins 能实施监控集成中存在的错误, ...
- 硬盘分区表格式GUID和MBR知识普及
我们的电脑硬盘分区格式一共有两种,一种是GUID(GPT),一种是MBR 如果你的电脑原装系统是win8或者以上的,那么他的硬盘分区表格式为GUID(GPT)格式的:如果是win7以下的,那么一般就是 ...
- 手机端仿ios的单级联动脚本三
脚本 <script>var weekdayArr=['非公司企业法人','个体工商户','私营独资企业','私营合伙企业','有限责任公司','股份有限责任公司'];var mobile ...
- spring mvc和swagger整合
pom.xml 导入jar jar包 所属 备注 spring-core spring spring核心包 spring-expression spring spEl表达式 spring-beans ...
- 【原】【译文】理解storm拓扑并行度
原文地址: http://storm.apache.org/releases/1.2.1/Understanding-the-parallelism-of-a-Storm-topology.html ...
- Gulp-自动化编译sass和pug文件
突然发现在我博客文章中,缺少这一块的记录,那我就补一篇吧. gulp的环境配置和安装:http://www.cnblogs.com/padding1015/p/7162024.html 这里就补充一篇 ...