session操作
# 获取
request.session['k1']
request.session.get('k1',None) # 不会报错,若session中是以字典存储,则可用['']获取
# 设置(默认两周)
request.session['k1'] = 123 # 有则改,无则添(123可用字典代替)
request.session.setdefault('k1',123) # 存在则不设置
# 删除
del request.session['k1'] # 会报错
# 清空
request.session.clear()
request.session.keys()
request.session.values()
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()
# 用户session的随机字符串
request.session.session_key
# 将所有Session失效日期小于当前日期的数据删除
request.session.clear_expired()
# 检查 用户session的随机字符串 在数据库中是否存在
request.session.exists("session_key")
# 删除当前用户的所有Session数据
request.session.delete("session_key")
request.session.set_expiry(value)
* 如果value是个整数,session会在value秒数后失效。
* 如果value是个datatime或timedelta,session就会在这个时间后失效。
* 如果value是0,用户关闭浏览器session就会失效。
* 如果value是None,session会依赖全局session失效策略。
session储存配置
1、数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # (默认)
2、缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
3、文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
4、缓存+数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎
5、加密cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎
session验证装饰器
def login(func):
def wrap(request, *args, **kwargs):
# 如果未登陆,跳转到指定页面
if request.path == '/test/':
return redirect('http://www.baidu.com')
return func(request, *args, **kwargs)
return wrap
session装饰器