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

Response响应对象:web

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

  1. 若是返回的是一个合法的响应对象,它会从视图直接返回。
  2. 若是返回的是一个字符串,响应对象会用字符串数据和默认参数建立。
  3. 若是返回的是一个元组,且元组中的元素能够提供额外的信息。这样的元组必须是(response, status, headers) 的形式,且至少包含一个元素。 status 值会覆盖状态代码, headers 能够是一个列表或字典,做为额外的消息标头值。
  4. 若是上述条件均不知足, Flask 会假设返回值是一个合法的 WSGI 应用程序,并转换为一个请求对象。

以上从引用官网的一段话,其实简单来讲就是全部的响应都会生成一个合法的响应对象,咱们日常用的最多的就是直接返回字符串或是返回一个template。最终都会被flask处理成response对象。安全

Cookies对象:服务器

 

Cookies用于在客户端存储一些信息, 当flask应用响应用户请求时能够设置cookies的值,当用户请求flask应用时能够获取cookies的值。cookie

简单来讲,设置cookies的方式为:session

responseObj.set_cookies(“xxx”)  ,此处的responseObj是一个response的实例,xxx是cookies的名称app

获取cookies的方式为测试

request.cookies.get(“xxx”),此处的request是全局request对象,xxx是cookies的名称this

下面经过一个例子来讲明cookies的使用spa

  1. 建立一个设置cookies的方法:
  1. @app.route("/setCookies")
  2. def setCookies():
  3.     res = make_response("this page will set a cookies")
  4.     res.set_cookie("myCookies","my first cookies")
  5.     return res

注:须要import make_response方法

  2. 建立一个获取cookies的方法

  1. @app.route("/getCookies")
  2. def getCookies():
  3.     myCookies = request.cookies.get("myCookies")
  4.     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

使用下面的代码

  1. @app.route("/setSession")
  2. def setSession():
  3.     session["userName"] = "my session"
  4.     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的设置

  1. app.secret_key = "1234"

安全起见,secret_key要设置的复杂一些,这里演示用就简单设置了。

  2. 验证session

代码以下:

  1. @app.route("/checkSession")
  2. def checkSession():
  3.     if "userName" in session:
  4.         return "userName exist"
  5.     else:
  6.         return "userName lost"

  3. 移除session

代码以下:

  1. @app.route("/removeSession")
  2. def removeSession():
  3.     session.pop("userName",None)
  4.     return "remove session!"
  1. 验证

访问/setSession

验证session 访问/checkSession

证实session存在

下一步,移除session

而后咱们再次验证session。

Session已丢失

相关文章
相关标签/搜索