首页 > 其他 > 详细

Django之redis-session

时间:2020-03-05 23:38:15      阅读:64      评论:0      收藏:0      [点我收藏+]

一:安装

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

技术分享图片

 

Django之redis-session

原文:https://www.cnblogs.com/SR-Program/p/12423761.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!