饼干:是浏览器为Web服务器存储的一小段信息。每次浏览器从某个服务器请求页面时,它收到服务器回发送过来的饼干。它保存在浏览器下的某个文件夹下。
会话:Django的会话机制会向请求的浏览器发送饼干字符串。同时也会保存到本地一份,用来验证浏览器登录是否为同一用户。它存在于服务器,Django默认会把会话存入到数据库中。
会话依赖于饼干,如果浏览器不能保存饼干那么会话就失效了。因为它需要浏览器的Cookie值(sessionid)去会话里做对比.session就是用来在服务器端保存用户的会话状态。
1,获取饼干:
request.COOKIES(例子) request.COOKIES.get(关键) #普通饼干是明文传输的,可以直接在客户端直接打开,所以需要加盐,解盐之后才能查看 请求。get_signed_cookie(键,默认=RAISE_ERROR、盐=" max_age=None)
参数:
-
<李>默认值:默认值李>
<李>盐:加密盐李>
<李> max_age:后台控制过期时间李>
2,设置饼干:
代表=HttpResponse(…)或代表=渲染(请求,…) rep.set_cookie(关键值,…) #给饼干签名 rep.set_signed_cookie(关键值,盐='加密盐”,…)
参数:
-
<李>键,键李>
<李>="值,值李>
<李> max_age=None,超时时间李>
<李>=没有到期,超时时间(即需要到期,所以把它如果没有了。)李>
<李>路径='/',饼干生效的路径,/表示根路径,特殊的:跟路径的饼干可以被任何url的页面访问李>
<李>域=None,饼干生效的域名李>
<李>安全=False, https传输李>
<李> httponly=False真的只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖),防止xss攻击李>
由于饼干保存在客户端的电脑上,所以,JavaScript和jquery也可以操作饼干。
& lt;脚本src=" https://www.yisu.com/static/js/jquery.cookie.js "祝辞& lt;/script> 美元。30岁的饼干(“list_pager_num”{路径:'/'});
Django中默认支持会话,其内部提供了5种类型的会话供开发者使用:
数据库(默认)
缓存
文件
缓存+数据库
加密饼干
<强> 1,数据库会话强>
Django默认支持会话,并且默认是将会话数据存储在数据库中,即:django_session表中。
。配置settings.py
SESSION_ENGINE=' django.contrib.sessions.backends。db ' #引擎(默认) SESSION_COOKIE_NAME=" sessionid " #会话的饼干保存在浏览器上时的关键,即:sessionid=随机字符串(默认) SESSION_COOKIE_PATH="/" #会话的饼干保存的路径(默认) SESSION_COOKIE_DOMAIN=#没有会话的饼干保存的域名(默认) SESSION_COOKIE_SECURE=False #是否Https传输饼干(默认) SESSION_COOKIE_HTTPONLY=True #是否会话的cookie只支持http传输(默认) SESSION_COOKIE_AGE=1209600 #会话的饼干失效日期(2周)(默认) SESSION_EXPIRE_AT_BROWSER_CLOSE=False #是否关闭浏览器使过得会话期(默认) SESSION_SAVE_EVERY_REQUEST=False #是否每次请求都保存会话,默认修改之后才保存(默认)
b。使用
def指数(请求): #获取,设置,删除会话中数据 request.session (k1的) request.session.get (k1,没有) 请求。会话(k1的)=123 request.session.setdefault (k1, 123) #存在则不设置 德尔request.session (k1的) #所有键值,键值对 request.session.keys () request.session.values () request.session.items () request.session.iterkeys () request.session.itervalues () request.session.iteritems () #用户会话的随机字符串 request.session.session_key #将所有会话失效日期小于当前日期的数据删除 request.session.clear_expired () #检查用户会话的随机字符串在数据库中是否 request.session.exists (“session_key”) #删除当前用户的所有会话数据 request.session.delete (“session_key”) >之前django进阶之饼干和会话的使用示例