django 笔记12 session
第一步写好函数,然后生成数据库session表 python manage.py makemigrations python manage.py migrate session原理: 1、Session 基于COokie做用户验证时: 不建议添加敏感信息; 优点:服务器压力减小 Cookie是保存在用户浏览器端的键值对 Session是保存在服务器端的键值对 依赖cookie 即随机字符串 session = { 随机字符串1:{ 'is_login': True, 'user':''' 'nid': ... } 随机字符串2:{ 'is_login':True, 'user':''' 'nid': ... } } a.Session原理 b.Cookie和Session对比 c.Session配置(缺少cache) d.实例 实现两周的自动登录 -request.session.set_expiry(60*10) -SESSION_SAVE_EVERY_REQUEST = True PS: cookie中不设置超时时间, 则表示关闭浏览器自动清除 request.session['k1'] request.session.get('k1',none) request.session['k1'] = 123 request.session.setdefault('k1', 123) request.session.clear() 注销时用 del request.session['k1'] requeset.session.keys() requeset.session.values() 用户session的随机字符串 request.session.session_key 获取当前人的随机字符串 一般用不着 将所有session失效日期小于当前日期的数据删除 request.session.clear_expired() 检测用户session的随机字符串在数据库中是否存在 request.session.exists("session_key") 基本不用 默认session的超时时间是两周 request.session.set_expiry(value) *如果value是个整数, session会在些秒数后失效 *如果value是个datatime或timedelta session就会在这个时间后失效 *如果value是0 用户关闭浏览器session就会失效 在settings上设置这句 SESSION_SAVE_EVERY_REQUEST = True 表示页面刷新 超时时间也跟着刷新 原理 session依赖cookie 随机字符串 对服务器中的session操作 request.session.get() #获取值 request.session[x] = x 设置值 request.session.clear() 注销时 -配置文件中设置默认操作: SESSION_COOKIE_AGE = 1209600 SESSION_SAVE_EVERY_REQUEST = True SESSION保存在哪里! 默认在数据库 引擎的配置 SESSION_ENGINE = 'django.contrib.sessions.backends.db'默认数据库#保存在数据库中 当中的是可以换!! 可以选择放在缓存,文件,数据库,加密cookie, 缓存加数据库 如果缓存: SESSION_ENGINE = 'django.contrib.sessions.backends.cache' SESSION_CACHE_ALIAS = 'default' #名字 默认CACHES中没有redis引擎 django默认不支持redis 只有memerch def login(request): if request.method == "GET": return render(request,'login.html') elif request.method == 'POST': user = request.POST.get('user') pwd = request.POST.get('pwd') if user == 'root' and pwd =='123': #生成随机字符串 #写到用户浏览器cookie #保存到session中 #在随机字符串对应的字典中设置相关内容 request.session['username'] =user #这句话将上面四句话解决 request.session['is_login'] = True request.session.set_expiry(10) return redirect('/index') else: return render(request,'login.html') def index(request): #获取当前用户的随机字符串 #根据随机字符串获取对应的信息 if request.session['is_login']: return HttpResponse(request.session['username']) else: return HttpResponse('no ok')
原谅我这一生不羁放纵爱自由