zoukankan      html  css  js  c++  java
  • python web开发-flask中response,cookies,session对象使用详解

    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已丢失

  • 相关阅读:
    iOS_03_为什么选择ios开发
    iOS_02_什么是ios开发
    iOS_01_什么是ios
    Hadoop之HDFS
    hadoop组件及其作用
    数组
    Scala基础知识(二)
    hadoop安装过程
    Scala基础知识
    建造者模式
  • 原文地址:https://www.cnblogs.com/itxb/p/8616607.html
Copyright © 2011-2022 走看看