Django之Session的配置与使用

本文深入讲解了Django框架中Session的使用方法,包括Session的概念、如何在Django中操作Session,以及Django提供的多种Session存储选项。同时,还介绍了如何在settings.py中配置Session的相关参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Cookie是什么?简单来说就是保存在客户端浏览器上的键值对。
Session是什么?简单来说是保存在服务端的数据(本质是键值对)
Session的应用依赖Cookie,作用是保持会话
2.Django中使用Session

 #向Session中设置一条键为k1,值为v1的键值对
 request.session["k1"] = v1

 #获取Session中键为k1的数据
 request.session.get("k1")

#如果session中键为k1的数据存在则不设置,如果不存在,则设置一条键为k1,值为123的数据
request.session.setdefault("k1",123) 

 #删除session中键为k1的数据
 del request.session["k1"] 
 
 #获得session中设置的所有的键
 request.session.keys()
 
 #获得session中设置的所有值
 request.session.values()

 #获取所有的键值对
 request.session.items()
 
 #获取用户session的随机字符串
 request.session.session_key
 
 #将所有session失效日期小于当前日期的数据删除
 request. session.clear_expired()

 #检查用户session的随机字符串在数据库中是否存在
 request.session.exists("session的随机字符串")
 
 #删除当前用户的所有session的数据
 request.session.delete("session的随机字符串")

#设置session的过期时间
request.session.set_expiry(value)
#如果value是整数,则session会在这些秒数后失效
#如果value是datatime或timedelta,session会在这个时间失效
#如果value是0,用户关闭浏览器时session会失效
#如果value是None,session会依赖全局session失效策略

3.Django中配置Session

#在settings.py文件中配置Django中Session的相关信息
SESSION_COOKIE_NAME = "sessionid" #Session的cookie保存在浏览器上是的名字
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失效的时间 (两周)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False #是否关闭浏览器是的session过期
SESSION_SAVE_EVERY_REQUEST = False #是否每次请求都保存session,默认修改之后保存

以上配置均是Django的默认配置,可以根据需求,更改响应的配置。
4.Django中提供了5中类型的Session供使用:
1.数据库
2.缓存
3.文件
4.缓存+数据库
5.加密cookie
常用的是缓存和数据库
下面是配置更改Session的类型:

#在settings.py文件中添加以下配置,可以使用不同的Session类型
#数据库类型的Session
SESSION_ENGINE = "django.contrib.session.backends.db"

#文件类型的Session
SESSION_ENGINE = "django.contrib.session.backends.file"
SESSION_FILE_PATH=路径 #如果缓存文件的路径为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()

#缓存类型的Session
SESSION_ENGINE = "django.contrib.session.backends.cache"
SESSION_CACHE_ALIAS ="default" #使用的缓存别名

#缓存+数据库
SESSION_ENGINE = "django.contrib.session.backends.cached_db"

#cookie
SESSION_ENGINE = "django.contrib.session.backends.signed_cookies"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值