随笔 - 911  文章 - 5  评论 - 94  阅读 - 243万

Session管理

request.session.set_expiry(10) #设置10s后session失效
request.session.get_expire_at_browser_close() #查看session是否在浏览器关闭后失效

django的session默认都保存在django_session表里

在pathon中查看session:
from django.contrib.sessions.models import Session
Session.objects.all()
s=Session.objects.get(pk='y6n24k3l19a94h2vy999o2i4zsb7vcaa')
s.get_decoded() #查看该session的username
s.expire_date #查看该session的过期时间


set_expiry():
* 如果value是个整数,session会在些秒数后失效。
* 如果value是个datatime或timedelta,session就会在这个时间后失效。
* 如果value是0,用户关闭浏览器session就会失效。
* 如果value是None,session会依赖全局session失效策略。

get_expiry_date() #查看session失效时间
get_expiry_age() #查看session失效时长
get_expire_at_browser_close() #查看session是否在浏览器关闭后失效


django session默认2周后失效,关闭浏览器也不失效。
使用set_expiry()方法设置session失效时间,这样设置后,关闭浏览器session还不会失效,只有当时间到了才会失效。


修改settings.py设置浏览器关闭后失效:
1.在settings.py最后一行添加 SESSION_EXPIRE_AT_BROWSER_CLOSE=True
2.清空已保存的session:delete from django_session
3.清空IE缓存
4.重新测试OK,使用print request.session.get_expire_at_browser_close()查看session是否在浏览器关闭后失效

django保存在数据库中的session,如果用户主动退出,session会自动清除,如果没有退出就一直保留,记录数越来越大,要定时清理没用的session。

任务计划定时运行命令

python manage.py clearsessions(未测试)

django-admin.py cleanup

 

只使用session的方式,无需再使用cookie方式。session其实是依赖于Cookie的,如果浏览器不支持Cookie的话,Django的Session也就无从用起了,因为Session的生成是根据Cookie里面记录的SESSION_COOKIE_NAME来生成的.

request.session.test_cookie_worked() #测试客户端是否支持cookie

Django中的Session和Cookie管理:

http://www.cnblogs.com/BeginMan/p/3890761.html

http://blog.csdn.net/aixiaohei/article/details/6947150

http://simple-is-better.com/news/499

posted on   momingliu11  阅读(1983)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示