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

 

posted @   SR丶  阅读(574)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示
CONTENTS