会话:双方之间的http交互,从访问一个网站到关闭浏览器结束这次访问,称之为一次对话。
http协议时无状态的,导致会话状态难以保持。
cookies&Session就是为了保持会话状态。
cookies:保存在客户端浏览器上的存储空间,可在浏览器内开发工具查看。
cookies特点:
①cookies在浏览器上以键值对的形式存储,ASCII字符串(不能是中文)
②存储的数据有生命周期。
③存储的数据按域存储隔离,不同的域之间无法访问。
④cookies内部的数据会在每次访问此网址时携带到服务器端,若cookies过大会影响响应速度。
cookies的使用——储存:
HttpResponse.set_cookie(key,value='***',max_age=None)
key:cookie的名字
value:cookie的值
max_age:cookie存活时间,秒为单位。
expires:具体过期时间
若maxage和expires未指定,当关闭浏览器是此数据失效。
eg:
myresponse=HttpResponse('设置cookies') myresponse.set_cookie(key='user1',value='asdfghjkl',max_age=500)
想要修改、更新,也是使用set_cookie方法。
删除cookies:
myresponse=HttpResponse('删除cookies') myresponse.delete_cookie(key='user1')
key不存在也不会报错,什么都不会发生。
获取cookies:
value=request.cookieS.get('cookie名','默认值')
request.cookieS就相当于字典,一般用get方法取值,若不存在则返回默认值。
一般用于用户登录验证。用户输入账号密码后登录,利用POST请求将账号密码提交,后端与数据库中作比较后若成功,就set_cookie,将名称写在cookies里。
Session也是为了保持用户状态。
django获取用户信息后在服务器内生成session存储用户数据,将一个sessionID返回给浏览器,浏览器将sessionID放入cookies,在下一次提交请求时,将sessionID提交给服务器,这样比cookie更加安全。
Session配置:
1、
在INSTALLED_APPS下添加(一般自定义就已经存在):
'django.contrib.sessions'
2、
在MIDDLEWARE列表中添加(一般自定义就已经存在):
'django.contrib.sessions.middleware.SessionMiddleware'
启用session中间件。
session使用:
1、保存session的值到服务器
request.session['KEY']=VALUE
2、获取session的值
value=request.session['KEY'] value=request.session.get('KEY',默认值)
request.session[‘KEY’]也可以当作字典来用(推荐使用get方法)
3、删除session
value=request.session['KEY']
session也是有时间的,时间取决于sessionID,没有id的话session也就相当于到期。
过期时间默认为两周(与框架、版本都有关)。
session相关配置:
settiong.py中
SESSION_cookie_AGE
存活周期,单位为秒。
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
若为True,当关闭浏览器时session失效(默认为False)
django会把session的数据放在数据库中
django_session表中。
django为单表数据,数据会越来越多,过期数据也不会自动清理。
需要手动清理数据,否则越来越多,影响响应速度!
python3 manage.py clearsessions
一般在晚上执行该命令清理数据。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)