cookie/session 本是古典 何须时尚 2022-06-03 02:26 153阅读 0赞 > 产生背景:一次连接,从浏览器的一个request开始,到服务器返回response结束,多个页面需要传递参数,将要传递的数据存储到一个指定的位置,另外的页面去制定位置读取。 > > cookie是客户端,session是服务端,session依赖于cookie而存在,如果cookie被清除了,那么session也不会存在,cookie上传一个字符串,给session一个id,session请求时带着这个id来找cookie识别,cookie就见了这个id,就会对应的找出那个字符串,相当于一个令牌,如果cookie没了,session带着令牌不知道找谁,肯定是找不到的,岂不是很尴尬,就像超市门口的自动存货台。你自己相当于session,而管理员相当于cookie。 > > cookie本身由浏览器生成,通过Response将cookie写到浏览器上,下一次访问,浏览器根据不同的规则携带cookie过来 ### Cookie 客户端 ### > 1. 一种会话技术,延长请求的生命周期,让我下一次的请求和上一次的请求有一些数据共享 > 2. cookie通常在响应中设置,在请求中会自动携带我们网站的所有cookie > 3. cookie 存储在浏览器中,使用文件进行存储,存储格式键值对 > 4. cookie不能直接存中文,不能跨浏览器使用,也不能跨域名 > response.set\_cookie(key,value,\[max\_age=None,exprise=None\]) > request.GET.get(key,defaultvalue) ### Session 服务端 ### > 1. 一种会话技术 > 2. Session是服务端技术,但是依赖于cookie > 3. Session存储到数据库中,数据库中使用Base64编码 > 4. Session支持过期,默认过期时间两周 > 5. Session支持中文 ## cookie ## 1,定义视图函数 def index(request): # 得到返回的cookie值 username = request.COOKIES.get('username') data = { 'username':username} return render(request,'app/index.html',context=data) def dologin(request): # 获取用户名 dd = request.POST.get('user') # 重定向 response = HttpResponseRedirect(reverse('rock:index')) # 在返回中设置cookie response.set_cookie('username',dd) return response > (1)存储,set > 在dologin得到数据,用cookie获取到需要得到的用户名,username是key,dd是value,session也一样,都是字典类型,都需要key,不可缺少。 > dd = request.POST.get(‘user’) > response.set\_cookie(‘username’,dd) > 用重定向返回index页面, > response = HttpResponseRedirect(reverse(‘rock:index’)) > (2)获取,get > 在index页面获取到数据,并传递给页面渲染出来 > username = request.COOKIES.get(‘username’) > data = \{‘username’:username\} > > cookie设置有效时间,只要开着,永不过期,关闭浏览器之后按照我们设置的时间过期 > response.set\_cookie(‘username’,dd,max\_age = 30) > 实现功能是 一星期内免登陆, 根据复选框的值判断是否储存cookie,并设置过期时间 > response.set\_cookie(‘username’,dd,expires = timedelta(day=30)) 2,在HTML页面设置 #index #数据渲染到页面 <span>欢迎</span>{ { username }} <br> <a href="{% url 'rock:login' %} ">登录</a> <br> <a href="">注销</a> > login > 反向解析 > > \{% csrf\_token %\} > 用户名 > > -------------------- ## session ## > 跟cookie的方法一样,只是拿和取的方法跟cookie不一样 > > (1)存储 > def dologinSession(request): > user = request.POST.get(‘user’) > \# 字典结构,根据key拿value > request.session\[‘username’\] = user > \# 重定向 > return redirect(reverse(‘session:index.html’)) > > (2)获取 > 在index里面获取 > username = request.session.get(‘username’)
还没有评论,来说两句吧...