cookie and session

cookie

定义:   保存在浏览器上的一组组键值对

特性:

	服务器让浏览器保存的cookie

	浏览器有权利进行不设置

	下次访问时自动携带响应的cookie

Django中的操作

设置:

ret.set_cookie('is_login', '1')  # 设置cookie 超时时间 max_age=5  路径  path='/home/'
ret.set_signed_cookie('is_login', '盐', 'day66')   # 设置加密cookie

获取:

request.COOKIES.get('is_login')  # 不加密的cookie
request.get_signed_cookie('is_login',salt='盐',default='xx')  # 加密cookie

删除

ret.delete_cookie('is_login')  # Set-Cookie: is_login=""; expires=Thu, 01-Jan-1970 00:00:00 GMT; Max-Age=0; Path=/

session

定义:  保存在服务器端的一组组键值对

为什么使用session:

	cookie的长度和个数受到限制

	cookie保存在浏览器本地不安全

Django的操作

设置:

request.session['is_login'] = '1'           # 设置session数据
request.session.set_expiry(5)             # 设置超时时间

获取:

request.session.get('is_login')  # 获取session

删除:

del request.session[key]     # 删除单个session
request.session.delete()     # 删除服务器的session数据,不删除cookie
request.session.flush()      # 删除session和cookie

其他方法

request.session.set_expiry(value)   # 设置超时时间

request.session.clear_expired()  # 清除所有超时的 session

配置:

# Cookie name. This can be whatever you want.
SESSION_COOKIE_NAME = 'sessionid'
# Age of cookie, in seconds (default: 2 weeks).
SESSION_COOKIE_AGE = 60 * 60 * 24 * 7 * 2

SESSION_SAVE_EVERY_REQUEST = False
# Whether a user's session cookie expires when the Web browser is closed.
SESSION_EXPIRE_AT_BROWSER_CLOSE = False

# 將session 存储在数据库中  默认配置
SESSION_ENGINE = 'django.contrib.sessions.backends.db'

# 將session 存储在缓存中
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

# session 存储 缓存 + 数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db'

# 將session 存储在文件中
SESSION_ENGINE = 'django.contrib.sessions.backends.file'
# 文件路径
SESSION_COOKIE_AGE = None
posted @ 2018-12-26 20:41  拐弯  阅读(120)  评论(0编辑  收藏  举报