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