1.Cookie是什么?简单来说就是保存在客户端浏览器上的键值对。
Session是什么?简单来说是保存在服务端的数据(本质是键值对)
Session的应用依赖Cookie,作用是保持会话
2.Django中使用Session
#向Session中设置一条键为k1,值为v1的键值对
request.session["k1"] = v1
#获取Session中键为k1的数据
request.session.get("k1")
#如果session中键为k1的数据存在则不设置,如果不存在,则设置一条键为k1,值为123的数据
request.session.setdefault("k1",123)
#删除session中键为k1的数据
del request.session["k1"]
#获得session中设置的所有的键
request.session.keys()
#获得session中设置的所有值
request.session.values()
#获取所有的键值对
request.session.items()
#获取用户session的随机字符串
request.session.session_key
#将所有session失效日期小于当前日期的数据删除
request. session.clear_expired()
#检查用户session的随机字符串在数据库中是否存在
request.session.exists("session的随机字符串")
#删除当前用户的所有session的数据
request.session.delete("session的随机字符串")
#设置session的过期时间
request.session.set_expiry(value)
#如果value是整数,则session会在这些秒数后失效
#如果value是datatime或timedelta,session会在这个时间失效
#如果value是0,用户关闭浏览器时session会失效
#如果value是None,session会依赖全局session失效策略
3.Django中配置Session
#在settings.py文件中配置Django中Session的相关信息
SESSION_COOKIE_NAME = "sessionid" #Session的cookie保存在浏览器上是的名字
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失效的时间 (两周)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False #是否关闭浏览器是的session过期
SESSION_SAVE_EVERY_REQUEST = False #是否每次请求都保存session,默认修改之后保存
以上配置均是Django的默认配置,可以根据需求,更改响应的配置。
4.Django中提供了5中类型的Session供使用:
1.数据库
2.缓存
3.文件
4.缓存+数据库
5.加密cookie
常用的是缓存和数据库
下面是配置更改Session的类型:
#在settings.py文件中添加以下配置,可以使用不同的Session类型
#数据库类型的Session
SESSION_ENGINE = "django.contrib.session.backends.db"
#文件类型的Session
SESSION_ENGINE = "django.contrib.session.backends.file"
SESSION_FILE_PATH=路径 #如果缓存文件的路径为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()
#缓存类型的Session
SESSION_ENGINE = "django.contrib.session.backends.cache"
SESSION_CACHE_ALIAS ="default" #使用的缓存别名
#缓存+数据库
SESSION_ENGINE = "django.contrib.session.backends.cached_db"
#cookie
SESSION_ENGINE = "django.contrib.session.backends.signed_cookies"