Django会话控制-Session

1.Session的理解

        Django的内置的会话控制简称Session,它可以存储用户的数据信息。当用户首次访问网站时,网站的服务器自动创建Session对象,相当于该用户在网站的一个身份凭证。当用户在网站页面跳转时,存储在Session对象中的数据不丢失。只有Session过期或被清理时,服务器才将Session中存储的数据清空并终止该Session。

2.Session和Cookie的关系

  • Session存储在服务器,Cookie存储在客户端
  • Session的安全性比Cookie高
  • 获取用户的Session,首先要从用户传递的Cookie中获取sessionid,然后根据sessionid在网站服务器找到相应的session

3.Django中Session配置

         在创建Django项目时,Django已默认启用Session功能,每个用户的Session通过Django中间件接收调度处理。在settings.py配置信息如下:

MIDDLEWARE = [
    "django.contrib.sessions.middleware.SessionMiddleware",
]

Session的创建和操作处理由settings.py中INSTALLED_APPS的 "django.contrib.sessions"完成。

INSTALLED_APPS = [
    "django.contrib.sessions",
]

默认用数据库存储Session信息,执行数据迁移时,在数据库生成数据表django_session

4.Django提供了5种session保存方式

#settings.py
#Django默认的保存方式,此方法无需设置
SESSION_ENGINE='django.contrib.sessions.backends.db'

#文件形式保存,同时设置文本保存路径
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
SESSION_FILE_PATH = '/MyDjango'

#以缓存的形式保存
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'

#以数据库+缓存的形式保存
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'

#以Cookie保存
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies'

5.Session相关配置信息设置

#settings.py
#设置session_key的键,默认为'sessionid'
SESSION_COOKIE_NAME = 'sessionid'
#浏览器Cookie生效路径,默认为'/',即127.0.0.1:8000
SESSION_COOKIE_PATH ='/'
#设置浏览器生效域名
SESSION_COOKIE_DOMAIN =None
#设置传输方式,False为HTTP,True为HTTPS
SESSION_COOKIE_SECURE = False
#是指是否只能用HTTP传输
SESSION_COOKIE_HTTPONLY = True
#Cookie有效期,默认两周
SESSION_COOKIE_AGE = 1209600
#是否关闭浏览器是的Cookie过期,默认False
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
#每次发送后是否保存Cookie,默认False
SESSION_SAVE_EVERY_REQUEST = False

6.Session的读写,主要在Views.py中

#views.py
#获取存储在Session的数据k,如果不存在,则报错
request.session['k']
#获取存储在Session的数据k,如果不存在,则为空值
request.session.get('k','')
#设置Session的数据
request.session['k'] = v
#删除Session中k 的数据
del request.session['k']
#删除整个session
request.session.clear()

#获取session的key
request.session.keys()
#获取session的value
request.session.values()

#获取session_key,即数据表django_session中session_key
request.session.session_key

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值