Cookies&Session
Cookies
会话:双方之间的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
一般在晚上执行该命令清理数据。
|