配置
一: 首先设置一个数据库用来储存Session, 但是Django并不知道, 所以我们下面要配置: 这里设置为redis的1号库 名叫session
CACHES = {
"session": { # session
"BACKEND": "django_redis.cache.RedisCache",
"LOCATION": "redis://127.0.0.1:6379/1",
"OPTIONS": {
"CLIENT_CLASS": "django_redis.client.DefaultClient",
}
},
}
二: 在settings中配置
1、SESSION_ENGIN = "django.contrib.sessions.backends.cache" Session引擎 前面django.contrib.sessions.backends固定 .后面的根据自己的配置来 看上面储存为之刻意看到 这里是cache
2、告诉django Session的储存位置: 就是数据库名 这里是session
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "session"
使用:
一:正常使用:
1、设置Session:
法一:request[session名] = 值
法二:request.session[Session名] request.session[Session名] = 值
法三:request.session.setdefault('k1',123) # 若是名为‘’k1“的Session存在则不设置
2、获取Session:
法一:request.session['k1'] 直接根据key值获取
法二:request.session.get('k1',None) 根据key值获取, 若是不存在就设置一个默认值, 货渠道自己设置的默认值
推荐法二
以下为了解
# 获取所有Session的key值
request.session.keys()
#获取所有Session的值
request.session.values()
# 获取所有Session的键和值(键值对)
request.session.items()
request.session.iterkeys()
request.session.itervalues()
request.session.iteritems()
3、给Session设置有效时间
request.session.set_expiry(value)
你可以传递四种不同的值给它:
* 如果value是个整数,session会在些秒数后失效(适用于整个Django框架,即这个数值时效时整个页面都会session失效)。
* 如果value是个datatime或timedelta,session就会在这个时间后失效。
* 如果value是0,用户关闭浏览器session就会失效。
* 如果value是None,session会依赖全局session失效策略。
4、清空Session
request.session.clear()
二:Django自带认证系统 login(),login()
django实现登录一个用户需要俩个函数:authenticate(username,password)和login(request,user),这2个函数里面的参数都是固定的,必须要传入。authenticate(username,password)如果校验通过则返回user对象,如果校验不通过则返回None。
login()接受2个参数,接受request对象和authenticate返回的user对象.
from django.contrib.auth import authenticate, login, logout
user = authenticate(username=user_name, password=pass_word)
login(request,user)
logout(request)
logout中只有1个参数,没有返回值,即使用户没有登录也不会抛出异常,这个方法,会将存储在用户session的数据全部清空
1、导包 : from django.contrib.auth import login, logout
2、设置Session:
login(request, Django认证系统authenticate()验证方法返回的数据) 一般都是login(request, user)
3、清楚Session
logout(request)