Python session介绍与使用

django内部支持5种session引擎: settings.py文件内设置

    数据库

SESSION_ENGINE = ‘django.contrib.sessions.backends.db’

    缓存

SESSION_ENGINE = ‘django.contrib.sessions.backends.cache’ SESSION_CACHE_ALIAS = ‘default’ # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置

    文件

SESSION_ENGINE = ‘django.contrib.sessions.backends.file’ SESSION_FILE_PATH = os.path.join(BASE_DIR, ‘cache’) # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir()

    缓存+数据库

SESSION_ENGINE = ‘django.contrib.sessions.backends.cached_db’

    加密cookie

SESSION_ENGINE = ‘django.contrib.sessions.backends.signed_cookies’

**注意: 以上5种引擎均支持session默认参数设置,使用方式相同**
    使用方法: 获取: request.session[key] # 不存在报错 request.session.get(key, None) # 无值返回None 设置: request.session[key] = value request.sessino.setdefault(key, 123) # 不存在设置默认值,存在不设置 删除某个值: del request.session[key] 删除当前用户的所有session数据: request.session.delete(session_key) 清除: request.session.clear() 支持.keys() .values() .items() .iterkeys() .itervalues()等一些字典操作方法 获取用户的随机字符串: request.session.session_key 删除失效日期小于当前日期的数据: request.session.clear_expired() 判断随机字符串是否存在session内: request.session.exists(session_key) 设置session失效时间: request.session.set_expirp(value) value:整数,该秒数后失效 value:datatime/timedelta,在该时间后失效 value:0 关闭浏览器失效 value:None,依赖全局失效策略 session参数设置: 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(默认False) SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认True) SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认1209600) SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认False) SESSION_SAVE_EVERY_REQUEST = True # 是否每次请求都保存Session,默认修改之后才保存(默认False):失效时间从最后请求算起
经验分享 程序员 微信小程序 职场和发展