方案I:
1. 安装 django-redis
liuqian@ubuntu:~$ pip install django-redis
dango-redis 官方文档:http://niwinz.github.io/django-redis/latest/#_configure_as_cache_backend
2. 配置 settings.py
CACHES = { "default": { "BACKEND": "django_redis.cache.RedisCache", "LOCATION": "redis://127.0.0.1:6379/0", "OPTIONS": { "CLIENT_CLASS": "django_redis.client.DefaultClient", "PASSWORD": "", # "PARSER_CLASS": "redis.connection.HiredisParser", # "SOCKET_TIMEOUT": 10, # "CONNECTION_POOL_CLASS_KWARGS": { # "max_connections": 2, # } } } } SESSION_COOKIE_AGE = 30 * 60 #设置session过期时间为30分钟 SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
方案II
1. 安装 django-redis-sessions
liuqian@ubuntu:~$ pip install django-redis-sessions
django-redis-sessions 官方文档:https://pypi.org/project/django-redis-sessions/
2. 配置settings.py
SESSION_ENGINE = 'redis_sessions.session' SESSION_REDIS = { 'host': 'localhost', 'port': 6379, 'db': 0, 'password': '', 'prefix': 'session', 'socket_timeout': 1 }
注意:
可能会遇到如下错误
只需要在settings.py 中增加下面的设置即可:
SESSION_SERIALIZER='django.contrib.sessions.serializers.PickleSerializer'
redis中查看:
views.py中使用:
1 # coding:utf-8 2 from datetime import timedelta 3 4 from django.shortcuts import render, redirect 5 6 def login(request): 7 '''session存redis练习''' 8 uname = request.session.get('myname') # 获取session的值 9 if not uname: 10 return render(request, 'book/login.html') 11 else: 12 return render(request, 'book/welcome.html', {'name': uname}) 13 14 def do_login(request): 15 name = request.POST.get('username', 'unknow') # 获取session的值,并给默认值 16 request.session['myname'] = name # 设置session 17 # 设置过期时间 18 # 0 浏览器关闭就过期 19 # int int秒后过期 20 # timedelta对象 当前时间加上timedelta后过期 21 # None 永不过期 22 request.session.set_expiry(timedelta(days=1)) # 设置session过期时间 23 return redirect('/book/login') 24 25 def logout(request): 26 # del request.session['myname'] # 删除session 27 # request.session.clear() # 清除所有会话 28 request.session.flush() # 删除当前的会话数据并删除会话的Cookie 29 return redirect('/book/login')