Flask之六:cookie与session
2020-04-26 本文已影响0人
奇奇乌布里
一、Cookie
用response对象的set_cookie方法来设置(更新)cookie
from flask import make_response # 1.导入response对象生成器
@fit.route('/t/')
def fitt():
# 2.把返回的内容(字符串)转换成一个response对象(一般是在return时自动转成response的,这里因为要设置cookie,所以先手动转为response)
rsp = make_response('Hello Sawasdee Salut Ohayo')
# 3.给对象添加【设置】cookie命令
rsp.set_cookie('username', 'pom')
return rsp # 4.返回,浏览器即可储存一个cookie
用request对象的cookies属性来获取cookie的两种方法
- cookie是包含在
request
请求的header
部分里的
from flask import request # 1.导入request对象
@fit.route('/t/')
def fitt():
# 2a.方式1:如果没有username这个cookie,则返回None【推荐】
s3 = request.cookies.get('username')
# 2b.方式2:如果没有username这个cookie,则出发KeyError错误
s3 = request.cookies['username']
return '-=- %s -=-' % s3
用response对象的delete_cookie方法来删除cookie
from flask import make_response # 1.导入response对象生成器
@fit.route('/t2/')
def fitt2():
# 2.把返回的内容(字符串)转换成一个response对象
rsp = make_response('Hello Sawasdee Salut Ohayo')
# 3.给对象添加【删除】cookie命令
rsp.delete_cookie('username')
return rsp # 4.返回,浏览器即可删除一个cookie
二、Session
session比cookie更加 安全 ,但是cookie比session更加 持久
-
session
的到期时间默认是至浏览器关闭 - 也可以设置
session
的到期时间app.permanent_session_lifetime = timedelta(minutes=1)
,然后开启session.permanent = True
,则session
就可以长时间有效了
在使用session之前,需要在主py中设置session的密钥
- 这里的
b
表示把后面的字符串.encode('utf8')
,详见《python字符串前的字母》 - 这个密钥一旦修改,之前客户端上保存的session就会全部失效
# 设置session的密钥,越复杂越好 【属于敏感信息】
app.secret_key = b'123456'
设置(更新)session像字典一样
from flask import session # 导入session实例
@fit.route('/t1/')
def fitt2():
session['username'] = 'Win' # 直接设置即可
return 'session set done'
读取session也有两种方法
from flask import session # 导入session实例
@fit.route('/t0/')
def fitt():
# 方法1:用get,没有的话也不会报错
a = ('%s' % session.get('username')) if session.get('username') is not None else 'Nobody'
# 方法2:直接用[],如果没有要报错
a = ('%s' % session['username']) if session['username'] is not None else 'Nobody'
return 'watdeezaa kun %s' % a
删除session用pop
from flask import session # 导入session实例
@fit.route('/t2/')
def ft():
session.pop('username', None) # pop掉就删除了
return 'session[username] is dropped!'
三、localStroage保存
如下:
var objA = {
name: "奇奇乌布里",
age: "16"
}
localStroage.setItem('user', JSON.stringify(objA)) // save
var name = JSON.parse(localStroage.getItem('user')).name // read
localStorage.removeItem("user") // delete