基础概念
!!!session针对浏览器,一浏览器对应一session,切换账户也是一个session
Session是保存在服务器的键值对
必须依赖于Cookie
存Session:
1. 在服务器生成随机字符串;
2. 生成一个和字符串对应的字典,用来储存用户数据
3. 随机字符串当作cookie 返回给浏览器
取Session:
1.从Cookie里找随机字符串
2.随机字符串到session中找对应字典
3.从字典中用key 取值
Session优势:
1.比Cookie能存的数据多
2.安全性好,数据在服务端
Session缺点:
1.Session数据打,占用资源
使用语法
# 获取值
request.session['k1']
request.session.get('k1',None)
# 设置值
request.session['k1'] = 123
# 删除当前的会话 【数据】 并删除会话的 【Cookie】。 (注销):
request.session.flush()
'''设置会话Session和Cookie的超时时间'''
request.session.set_expiry(value)
# 如果value是个整数,session会在些秒数后失效。
# 如果value是个datatime或timedelta,session就会在这个时间后失效。
# 如果value是0,用户关闭浏览器session就会失效。
# 如果value是None,session会依赖全局session失效策略。
案例,传最近登录时间
import datetime
def login(request):
now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
request.session['last_visit_time'] = now
....
# 获取:
time = request.session.get('last_visit_time')
公共配置 setting.py
其他公用设置项:
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key(名字)
SESSION_COOKIE_PATH = "/" # Session指定 cookie有效路径
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False # 每次请求都保存Session会重置过期时间