Django学习记录15

Django学习记录15,第1张

Django学习记录15 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

一般在晚上执行该命令清理数据。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5721553.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-18

发表评论

登录后才能评论

评论列表(0条)

保存