当前位置: 芃睿知识网 > 建站问题

django删除session的方法及缓存存储方式

知识网2021年11月07日 00:07原创

1、django删除session的三大方法

from django.contrib.auth import logout
def logout(request):
    request.session.flush()  # 删除 session 数据和 cookie
    request.session.delete()  # 只删除 session 数据,不删除 cookie
    logout(request) #删除当前会话,推荐使用这种方式 
    return render(request,'login.html')

2、django缓存存储设置方法

# 设置数据库 session

SESSION_ENGINE = 'django.contrib.sessions.backends.db' # session存储在数据库中(默认)

# 设置缓存 session

SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # session存储在内存当中,如果丢失不能找回,速度比数据库快

SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是 memcache),此处别名依赖缓存的设置

# 设置缓存、数据库 session

SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 优先本地存储缓存中读取,读取不到再去数据库中读取

# 设置文件 session

SESSION_ENGINE = 'django.contrib.sessions.backends.file' # session存储在临时文件中

SESSION_FILE_PATH = None # 缓存文件路径,如果为 None,则使用 tempfile 模块获取一个临时地址 tempfile.gettempdir()

# 加密 cookie session

SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

3、session 的基本操作:

request.session['login'] = 'false' # 设置 session 中的数据

request.session.get('login') # 通过 key 来获取 session 中的数据

request.session.exists(&login&) # 判断 session 的 login 在数据库中是否存在

request.session.setdefault('login', 'false') # 为 session 的 key 设置默认值 false

del request.session['login'] # 删除 session 的 key 中的数据

request.session.delete() # 删除当前会话的所有 session 数据

request.session.flush() # 删除当前的 session 数据并删除 cookie

request.session.clear_expired() # 将所有过期的 session 数据删除

request.session.session_key # 会话 session 的 key

# 获取 session(字典) 中的所有 键、值、键值对

request.session.keys() # 提取所有键

request.session.values() # 提取所有值

request.session.items() # 提取所有键值对

request.session.iterkeys() # 迭代键

request.session.itervalues() # 迭代值

request.session.iteritems() # 迭代键值对

# 设置会话 session 和 cookie 的超时时间

request.session.set_expiry(value)

# 如果 value 是个整数 n,session 会在 n 秒后失效

# 如果 value 是个 datatime 或 timedelta,session 就会在这个时间后失效

# 如果 value 是 0,用户关闭浏览器 session 就会失效

# 如果 value 是 None,session 会依赖全局 session 失效策略

4、其他的设置:

SESSION_COOKIE_NAME = &sessionid& # session 的 cookie 保存在浏览器上时的 key,即:sessionid=随机字符串(默认)

SESSION_COOKIE_PATH = &/& # session 的 cookie 保存的路径(默认)

SESSION_COOKIE_DOMAIN = None # session 的 cookie 保存的域名(默认)

SESSION_COOKIE_SECURE = False # 是否用 https 传输 cookie(默认)

SESSION_COOKIE_HTTPONLY = True # 是否 session 的 cookie 只支持 http 传输(默认)

SESSION_COOKIE_AGE = 1209600 # session 的 cookie 失效日期(2 个星期)(默认)

SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器的时候让 session 过期(默认)

SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存 session,默认修改之后才保存(默认)

本文章网址:https://www.shsongjiang.com/p54/

很赞哦!(3)

发表高见 (请对您的言行负责)

©芃睿知识网 版权所有 2012-2022 www.shsongjiang.com

备案号:赣ICP备2022001527号-1