一:安装
pip3 install django-redis-sessions #或者 pip3 install django-redis
二:存储
setting.py默认开启session
MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', # 默认开启 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ]
session存储方式
1:数据库(默认存放在django-session)
2:缓存
3:混合存储
# 存放在数据库中 (默认) SESSION_ENGINE='django.contrib.sessions.backends.db' # 存放在缓存中 SESSION_ENGINE='django.contrib.sessions.backends.cache' # 先从缓存中取,如果没有再从数据库中取。 SESSION_ENGINE='django.contrib.sessions.backends.cached_db'
如果session存储在数据库中,需要在项INSTALLED_APPS中安装Session应用
三:使用
settings配置文件
redis-session配置方式一
SESSION_ENGINE = 'redis_sessions.session' # session存储引擎 SESSION_REDIS_HOST = 'localhost' # redis服务的ip SESSION_REDIS_PORT = 6379 # redis服务端口号 SESSION_REDIS_DB = 2 # redis中的哪个数据库。 (redis中默认有16个数据库,数据库编号从0开始) SESSION_REDIS_PASSWORD = '' # redis服务密码 SESSION_REDIS_PREFIX = 'session_key' # sessionid键的前缀。
redis-session配置方式二
# Django的缓存配置 (用redis做缓存) CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", #redis存储 "LOCATION": "redis://127.0.0.1:6379/9", # redis服务器 以及存储位置 "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", } } } # 配置session存储 (用Django的默认缓存存储session) SESSION_ENGINE = "django.contrib.sessions.backends.cache" SESSION_CACHE_ALIAS = "default" # sessionid中的key
路由层
urlpatterns = [ url(r'^set_session/', views.set_session), url(r'^get_session/', views.get_session), ]
视图层
from django.shortcuts import render,HttpResponse import redis # Create your views here. def get_session(request): if request.session.has_key('username'): username = request.session['username'] print(username) # SR
return HttpResponse(username) def set_session(request): request.session['username'] = 'SR' request.session['age'] = 18 request.session.set_expiry(5) # 0:表示关闭浏览器过期;None:表示永不过期。 默认两周后过期。 return HttpResponse('设置session')
PS:上述redis已经存在该session