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):

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应用):


使用Redis存储session

1.安装redis

pip3 install django-redis-sessions==0.5.6

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

SESSION_ENGINE = 'redis_sessions.session'
SESSION_REDIS_HOST = 'localhost'
SESSION_REDIS_PORT = 6379
SESSION_REDIS_DB = 2
SESSION_REDIS_PASSWORD = ''
SESSION_REDIS_PREFIX = 'session'

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

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

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/84992717