Django Session使用原理基础概念 及 案例

基础概念

!!!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会重置过期时间

猜你喜欢

转载自blog.csdn.net/weixin_42329277/article/details/81880333