Response响应对象

当一个web请求被服务器处理完后,会返回用户请求的响应,这时候就要用到响应对象,根据响应给用户的形式不同,响应对象有以下几种处理方式

  1. 如果返回的是一个合法的响应对象,它会从视图直接返回。
  2. 如果返回的是一个字符串,响应对象会用字符串数据和默认参数创建。
  3. 如果返回的是一个元组,且元组中的元素可以提供额外的信息。这样的元组必须是(response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 可以是一个列表或字典,作为额外的消息标头值。
  4. 如果上述条件均不满足, 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的使用

  1. 创建一个设置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进行用户是否登录的验证

下面举例来说明:

  1. 设置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!"
  1. 验证

访问/setSession

验证session 访问/checkSession

证明session存在

下一步,移除session

然后我们再次验证session。

Session已丢失

转载于:https://www.cnblogs.com/itxb/p/8616607.html

python web开发-flask中response,cookies,session对象使用详解相关推荐

  1. python web开发-flask中日志的使用

    Flask使用日志记录的方式: 初始化flask应用实例 在flask中使用logger,需要初始化一个flask的应用 app = Flask(__name__) 2. 调用logger 直接调用l ...

  2. python web开发-flask中消息闪现flash的应用

    Flash中的消息闪现,在官方的解释是用来给用户做出反馈.不过实际上这个功能只是一个记录消息的方法,在某一个请求中记录消息,在下一个请求中获取消息,然后做相应的处理,也就是说flask只存在于两个相邻 ...

  3. python post json参数,Python requests.post方法中data与json参数区别详解

    在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json. data与json既可以是str类型,也可以是dict类型. 区别: 1.不管json是 ...

  4. Python 3.7.1 中 namedtuple 具名元组基本用法详解

    Python 3.7.1 中 namedtuple 具名元组基本用法详解 转载请注明出处:https://blog.csdn.net/jpch89/article/details/84645251 文 ...

  5. java中的session对象,Java对象中Response与session对象的方法是什么?

    广州达内Java培训小编了解到Java对象种类很多,有的小伙伴最不清楚的就是Response与session对象的方法,下面小编就搜集Response与session对象的方法供大家阅读.当一个客户首 ...

  6. python中文读音ndarray-numpy中的ndarray方法和属性详解

    NumPy数组的维数称为秩(rank),一维数组的秩为1,二维数组的秩为2,以此类推.在NumPy中,每一个线性的数组称为是一个轴(axes),秩其实是描述轴的数量.比如说,二维数组相当于是一个一维数 ...

  7. python支持向量机回归_Python中支持向量机SVM的使用方法详解

    除了在Matlab中使用PRTools工具箱中的svm算法,Python中一样可以使用支持向量机做分类.因为Python中的sklearn库也集成了SVM算法,本文的运行环境是Pycharm. 一.导 ...

  8. python flask教程百度云,Python Web框架Flask中使用百度云存储BCS实例

    对于部署在百度应用引擎BAE上的项目,使用百度云存储BCS(Baidu Cloud Storage)是不错的存储方案. 百度云存储已有Python SDK,对它进行简单封装后,就可以直接在Flask中 ...

  9. Java Web学习总结(40)——JSP中的Application对象和Session对象常用方法详解

    一.applicaton表示一个javax.servlet.ServletContext对象. 他实现了用户间数据的共享,可存放全局变量.它开始于服务器的启动,直到服务器的关闭,在此期间,此对象将一直 ...

最新文章

  1. 关于“编程的本质”的探讨
  2. 一文彻底理解Java单元测试
  3. 新手第四课-PaddlePaddle快速入门
  4. 通过pyinotify实现文件的监控,包括监控文件是否传输完成
  5. 为什么使用Maven
  6. java中生成不重复随机的数字
  7. python asyncore
  8. SpringBoot和RabbitMQ集成
  9. Spring IOC容器和Bean的配置
  10. 大数据分析需备哪些技能
  11. 请不要嘲笑有梦想的罗永浩
  12. 记事狗微博php,记事狗微博系统_366rtc
  13. oracle查询dictionary,Oracle的DICTIONARY/DICT视图。
  14. 天池竞赛:Docker 基本操作
  15. 主板、内存条、硬盘、显卡认识和选购
  16. 剑网3一直连接不上服务器,win10系统剑网3连不上服务器的解决方案
  17. 心电图学习笔记(1)
  18. BuaaCoding 001-025 Problems and Solutions
  19. 离散题目10(判断是否为满射函数 )
  20. java最新手机号正则校验

热门文章

  1. android xe 调用 java,Delphi XE6 for Android 让手机震动(调用Java的函数)
  2. html action不起作用,Html.ActionLink做为按钮或图像,而不是连接
  3. mfc140dll 丢失 微软常用运行库_集成最新运行库、一键安装、一键到位,运行库操作简单!...
  4. 从mysql读取数据保存成excel_小程序读取excel表格数据,并存储到云数据库
  5. 鼠标右键转圈圈_win10系统右键一直转圈
  6. 【若依(ruoyi)】向DAO中传递动态参数
  7. java用mvvm,[Java教程]MVVM架构~使用boxy和knockoutjs实现编辑功能
  8. fiddler如何设置过滤https_Google Analytics如何设置含有过滤器的帐户数据视图
  9. linux中original_如何在 Linux 中整理磁盘碎片
  10. mysql下载备份数据库命令行,如何从MariaDB数据库备份和还原命令行