flask 中cookie与session

本文介绍在Flask框架中如何使用cookie和session进行用户数据管理,包括设置、获取和删除cookie及session的方法,并解释了它们的工作原理。
#coding:utf8
"""
cookie: 用来记录用户和服务器的交互数据,比如,链接的状态信息,sessionID,csrf_token, 由服务器进行设置
cookie的设置: reponse.set_cookie(key,value,maxAge): maxAge表示过期时间, 如果不设置默认一次回话结束
cookie的获取: request.cookies[key]
"""
from flask import Flask
from flask import make_response
from flask import request

app=Flask(__name__)

@app.route('/set_cookie')
def set_cookie():

    response=make_response('nihao')
    response.set_cookie('name','hongqi',200) #有三个参数
    response.set_cookie("age", '13')#不注明时间,关闭浏览器就自动销毁数据
    # 在cookie中,只能用字符串
    # response['h']='nihao'
    return response

@app.route('/get_cookie')
def get_cookie():
    # name=request.cookies['name']
    # #这两种写法都行如果使用中括号的形式获取,不存在就会报错, 如果使用get,不存在返回none
    name=request.cookies.get('name')
    age=request.cookies.get('age')
    return "name is %s,name is %s" %(name,age)

if __name__ == '__main__':
    app.run('127.0.0.1',5000,debug=True)

上图是flask中set_cookie《创建》

设置cookie

方法一:

创建对象   make_response的对象

调用对象 的set_cookie方法设置cookie

方法二:

直接设置表单头

除了键值对,其他部分可去浏览器检查摘抄

 resp.headers["Set-Cookie"] = "HONG=python3; Expires=Mon, 27-Nov-2017 07:57:17 GMT; Max-Age=3600; Path=/"


与resp.cookies.get('键')《查询》或者是resp.cookies['键']

补充:

还有cookie的删除:

1) 可以通过在浏览器中设置来清除cookie.

(2) 使用Response的set_cookie进行清除

  1. @app.route('/del_cookie')  
  2. def del_cookie():  
  3.     response=make_response('delete cookie')  
  4.     response.set_cookie('Name','',expires=0)  
  5.     return response 

(3)使用Response的 delete_cookie方法.

  1. @app.route('/del_cookie2')  
  2. def del_cookie2():  
  3.     response=make_response('delete cookie2')  
  4.     response.delete_cookie('Name')  
  5.     return response 

#coding:utf8
"""
session: 用来存储客户的铭感信息, 比如:密码,状态信息等, 浏览器访问,服务器存储
设置session: session[key] = value
获取session: session[key], session.get(key)

然后获取session 里面的值,看看是否存在。

那么如何删除session呢?
可以直接使用session.pop('key',None) 即:
session.pop('name',None)
如果要删除session中所有数据使用:clear()即:
session.clear()//

Session 也可以设置过期时间:

app.config=["PERMANENT_SESSION_LIFETIME"]=10

下面这个方法可以用

from datetime import timedelta
 
session.permanent = True
app.permanent_session_lifetime = timedelta(minutes=5)
session['key'] = value

#coding:utf8
"""
session: 用来存储客户的铭感信息, 比如:密码,状态信息等, 浏览器访问,服务器存储
设置session: session[key] = value
获取session: session[key], session.get(key)

// session 这个东西有没有过期时间啊


注意点:
1. session空间的编号sessionID,会存储在cookies
2. sessionID的生成依赖于SECRET_KEY
"""""
from flask import Flask
from flask import session

app=Flask(__name__)

app.config["SECRET_KEY"] = "fjkdjfkdfjkdjfkdjkfjd" #必须要有
@app.route('/set_session')
def set_session():
    session['class']='seven'
    # ???
    # from datetime import timedelta
    # session.permanent = True
    # app.permanent_session_lifetime = timedelta(seconds=30)
    return "helloworld"

@app.route('/get_session')
def get_session():
    var=session['class']
    return var
if __name__ == '__main__':
    app.run(debug=True)

然后获取session 里面的值,看看是否存在。

那么如何删除session呢?
可以直接使用session.pop('key',None) 即:
session.pop('name',None)
如果要删除session中所有数据使用:clear()即:
session.clear()

比较下session['key']或者是session.get('key')的区别,就是前者没有取到值就报错,后者不会报错

session中的Name是一个字段表示一个session,value是服务器中的一个session_id。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值