Cookie
1. 下定义:
保存在浏览器端的键值对
2. 用处:
1. 登录
2. 记住密码/7天免登录
3. 用户浏览习惯(每页显示10条)
4. 简单的投票限制
3. Django操作Cookie
1. 设置Cookie
req = HttpResponse("OK")
req.set_cookie("key", "value")
# 设置加盐的cookie
req.set_signed_cookie("key", "value", salt="shanghais1hao", max_age=秒)
2. 获取Cookie
request.COOKIES --> 大字典
request.COOKIES["key"]
request.COOKIES.get("key", "")
# 获取加盐的Cookie
request.get_signed_cookie("key", default="", salt="shanghais1hao")
3. 删除Coookie
req.delete_cookie("key")
Session
1. 下定义:
保存在服务端的键值对,依赖于Cookie
2. 用处:
1. 登录
2. 保存手机验证码/验证码
3. 保存购物车数据
...
3. Django操作Session
1. 设置Session
1. request.session["key"] = "value"
2. request.session.set_expiry(秒/日期对象/时间间隔对象/0/None)
3. request.session.setdefault("k1", "v1")
2. 获取Session数据
1. request.session.get("k1", "")
2. request.session["k1"]
3. request.session.keys()
4. request.session.values()
5. request.session.items()
6. request.session.iterkeys()
7. request.session.itervalues()
8. request.session.iteritems()
3. 删除Session
1. request.session.flush()多用于注销
2. request.session.delete()
4. 手动清除早已经过期的session数据
request.session.clear_expired()
5. 相关配置项(写在settings.py中的)
1.每次请求都更新Session失效时间
SESSION_SAVE_EVERY_REQUEST = True
2. SESSION_COOKIE_AGE = 1209600 # 设置Cookie超时时间
3. SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key
4. 其他:
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)