Python Django,session,session存储引擎设置,redis存储session

 

应用名/views.py(视图,视图函数):

from django.shortcuts import render
from django.http import HttpResponse


# 视图函数。 设置session
def set_session(request):
    request.session['username'] = 'smart'  # 设置session
    request.session['age'] = 18
    # 设置过期时间(cookie中的session_id的过期时间)。 单位:秒
    request.session.set_expiry(5)  # 0:表示关闭浏览器过期;None:表示永不过期。 默认两周后过期。
    return HttpResponse('设置session')


# 视图函数。 获取session
def get_session(request):
    if request.session.has_key('username'):
        username = request.session['username']  # 获取session。 没有对应的值会抛异常。
    # request.session.get('键',默认值)    # 获取session
    return HttpResponse(username)


# 视图函数。 清除session信息
def clear_session(request):
    # request.session.clear()  # 清除session中的内容,但session_id对应的记录还存在。
    request.session.flush()  # 清除session中的内容,并且session_id对应的整条记录也被删除。
    # del request.session['键']   # 删除指定键和值。
    return HttpResponse('清除成功')

 


项目名/settings.py(项目配置,开启session。默认已开启session):

Python Django,session,session存储引擎设置,redis存储session_第1张图片

 

session的存储方式:数据库、缓存、混合存储。(默认存放在数据库的django_session表中)

项目名/settings.py(项目配置,session的存储方式):

# 存放在数据库中 (默认)
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.py(项目配置,INSTALLED_APPS中安装Session应用):

Python Django,session,session存储引擎设置,redis存储session_第2张图片

 


使用Redis存储session

1.安装redis

pip3 install django-redis-sessions==0.5.6

2. 项目名/settings.py(项目配置,增加如下配置):

SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'  # redis服务的ip
SESSION_REDIS_PORT = 6379   # redis服务端口号
SESSION_REDIS_DB = 2     # redis中的哪个数据库。 (redis中默认有16个数据库,数据库编号从0开始)
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'   # sessionid键的前缀。

管理redis的命令,需要保证redis服务被开启

查看:ps ajx|grep redis
启动:sudo service redis start
停止:sudo service redis stop
使用客户端连接服务器:redis-cli
切换数据库:select 2
查看所有的键:keys *
获取指定键的值:get name

使用Redis存储session的第二种方式:

安装Django-redis:  pip3 install django-redis

项目名/settings.py(项目配置,设置Django的缓存):

# Django的缓存配置 (用redis做缓存)
CACHES = {
    "default": {
        "BACKEND": "django_redis.cache.RedisCache",
        "LOCATION": "redis://127.0.0.1:6379/9",
        "OPTIONS": {
            "CLIENT_CLASS": "django_redis.client.DefaultClient",
        }
    }
}

# 配置session存储 (用Django的默认缓存存储session)
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
SESSION_CACHE_ALIAS = "default"

应用名/views.py(视图,使用Django-redis操作redis):

from django.http import HttpResponse
from django.views import View
# from redis import StrictRedis
from django_redis import get_redis_connection

# 类视图
class MyView(View):

    def get(self, request):
        # from redis import StrictRedis  # 原生redis
        # sr = StrictRedis(host='172.0.0.1', port='6379', db=9)

        # 通过Django-redis获取StrictRedis对象。(需要在settings.py中配置redis的链接)
        con = get_redis_connection('default')  # con就是StrictRedis类型。default对应settings.py中CACHES中设置的default。
        result = con.set('name', '张三')   # redis中存储String

        return HttpResponse('ok')

StrictRedis原生redis参考:https://blog.csdn.net/houyanhua1/article/details/85052846

 

你可能感兴趣的:(Python+,Python,Django,session,session存储)