Django框架全面讲解 -- Session
来源:互联网 发布:java数组转成json 编辑:程序博客网 时间:2024/06/06 00:12
Django中默认支持Session,其内部提供了5种类型的Session供开发者使用:
- 数据库(默认)- 缓存- 文件- 缓存+数据库- 加密cookie
1、数据库Session
Django默认支持Session,并且默认是将Session数据存储在数据库中,即:django_session 表中。a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认) 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,默认修改之后才保存(默认)b. 使用 def index(request): # 获取、设置、删除Session中数据 request.session['k1'] request.session.get('k1',None) request.session['k1'] = 123 request.session.setdefault('k1',123) # 存在则不设置 del request.session['k1'] # 所有 键、值、键值对 request.session.keys() request.session.values() request.session.items() request.session.iterkeys() request.session.itervalues() request.session.iteritems() # 用户session的随机字符串 request.session.session_key # 将所有Session失效日期小于当前日期的数据删除 request.session.clear_expired() # 检查 用户session的随机字符串 在数据库中是否 request.session.exists("session_key") # 删除当前用户的所有Session数据 request.session.delete("session_key") ...
2、缓存Session
a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎 SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 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,默认修改之后才保存b. 使用 同上
3、文件Session
a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎 SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() # 如:/var/folders/d3/j9tj0gz93dg06bmwxmhh6_xm0000gn/T 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,默认修改之后才保存b. 使用 同上
4、缓存+数据库Session
数据库用于做持久化,缓存用于提高效率a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎b. 使用 同上
5、加密cookie Session
a. 配置 settings.py SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎b. 使用 同上
跟数据库的操作一样,在Django中不同缓存方式的使用方法是一致的,想要改变缓存的类型只需要改变上述相应配置即可。
更多参考:https://docs.djangoproject.com/en/1.11/topics/http/sessions/ 和 https://docs.djangoproject.com/en/1.11/ref/settings/#settings-sessions
扩展:Session用户验证(装饰器)
def login(func): def wrap(request, *args, **kwargs): # 如果未登陆,跳转到指定页面 if request.path == '/test/': return redirect('http://www.baidu.com') return func(request, *args, **kwargs) return wrap
阅读全文
0 0
- Django框架全面讲解 -- Session
- Django框架全面讲解 -- 模板
- Django框架全面讲解 -- Model
- Django框架全面讲解 -- Form
- Django框架全面讲解 -- 分页
- Django框架全面讲解 -- Cookie
- Django框架全面讲解 -- 缓存
- Django框架全面讲解 -- 信号
- Django框架全面讲解 -- admin
- Django框架全面讲解 -- Django流程介绍
- Django框架全面讲解 -- Django 路由系统
- Django框架全面讲解 -- 中间件(MiddleWare)
- Django框架全面讲解 -- 序列化
- Django框架全面讲解 -- Django Views(视图函数)
- Django框架全面讲解 -- 认证系统(auth)
- Django框架全面讲解 -- 跨站请求伪造(csrf)
- django session
- Django session
- 修改CentOS7的网卡名为eth0
- Redis Cluster迁移目标节点宕机下填坑
- 【数字化】数字化转型成功的企业都发生了什么变化?
- html-webpack-plugin详解
- 网络状态的判断
- Django框架全面讲解 -- Session
- 最小二乘GAN:比常规GAN更稳定,比WGAN收敛更迅速
- 工作中规则感悟
- 头条丨2017年人工智能年报
- Tensorflow(r1.4)API--tf.summary.scalar
- Python虚拟环境virtualenv
- 业界丨美国的人工智能企业在研发哪些有趣的AI产品?
- 现场|除了谷歌AI中国中心成立的重磅消息,谷歌开发者大会现场还有这些
- 业界丨AI校招程序员最高薪酬曝光!腾讯80万年薪领跑,还送北京户口