Django之redis-session
一:安装#
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!