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


被折叠的 条评论
为什么被折叠?



