会话
用户开一个浏览,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话.
1.会话过程中要解决的问题
因为http协议是无状态的(不保存状态就是,每次都是基于一个请求一个响应.)每次请求和响应都跟上次没有关系)就会产生这种现象,第一次我们登陆网站成功了,当点击购物车的时候就有可能访问的识别的购物车.因为第一次和第二次访问时没有关系的.那怎么解决这个问题呢,我们可以在第一次请求的时候服务端制作一张身份证给浏览器,当浏览器再次请求的时候带着身份证到服务器,服务器拿到身份证后进行识别然后返回当前用户的内容.
上面的思路,就是Cookie
Cookie
(1)、Cookie介绍
Cookie是由服务器端生成,存储在浏览器中的一段纯文本信息,建议不要存 储敏感信息如密码,因为电脑上的浏览器可能被其它人使用。
(2)、Cookie原理
当第一次访问服务端的时候,服务端生成一个Cookie,并且响应的时候将 Cookie信息设置在响应头中然后保存到浏览器。
当浏览器再次访问的时候会携带Cookie到服务端。服务端拿到Cookie然后 进行判断。
(3)、Cookie特点
①Cookie以键值对的格式进行信息的存储
②Cookie基于域名安全,不同域名的Cookie是不能互相访问的。
例如访问baidu.com时向浏览器中写了Cookie信息,使用同一浏览器访 问sina.com时,无法访问到baidu.com写的Cookie信息。
③当浏览器请求某网站时,会将浏览器存储的跟网站相关的所有Cookie信息提交给网站服务器。
④cookie是有过期时间的,如果不指定,默认关闭浏览器之后cookie就会过期。
Session
(1) session介绍
Session是由服务端生成默认保存到数据库中的一段信息
对于敏感,重要的信息,建议要储藏在服务器端,不能存储在浏览器中
(2) session原理
第一次访问服务端时生成session并且生成一个随机字符串作为session的唯一标识(sessionid)保存到数据库
然后将sessionid设置给cookie,并且返回给浏览器
当浏览器下次访问时携带sessionid即可.
(3) session使用(session是类字典类型)
1.设置 session: request.session[key]=value
2.获取 session: request.session.get(key)
3.删除 session: request.session.flush() #将整条记录删除
session: request.session.clear() #删除内容部分
del request.session[‘username’] #删除指定的key
4. 指定session过期时间: request.session.set_expiry(2) 2s后过期,
默认是14天后过期,0表示关闭浏览器过期,5s表示5s后过期
#设置session
def set_session(request):
request.session['username']='zs'
request.session['age']=18
return HttpResponse('设置session')
#获取session
def get_session(request):
username=request.session['username']
age=request.session['age']
return HttpResponse(username + ':' + str(age))
#删除session
def clear_session(request):
request.session.flush() #将整条记录删除
request.session.clear() #删除内容部分
#删除指定的key
del request.session['username']
return HttpResponse('清除成功')