一.cookie
1.1 什么是 cookie?
cookie 是由服务器生成,存储在浏览器端的一小段文本信息。
cookie 的特点:
1)以 键值对 形式进行存储。
2)通过浏览器拜访一个网站时,会将浏览器存储的跟网站相干的所有 cookie 信息发送给该网站的服务器。
3)cookie 是基于域名平安的。
4)cookie 是有过期工夫的,如果不指定,默认敞开浏览器之后 cookie 就会过期。
1.2 cookie 的作用
HTTP 协定是无状态的,每次申请都是独立的,它的执行状况和后果与后面的申请和之后的申请没有任何的关系,而 cookie 就是为了满足人们对 http 申请状态的需要而诞生的。
1.3 Django 中 cookie 的应用
- 设置 cookie
示例
def cookie_set(request):
response = HttpResponse("<h1> 设置 Cookie</h1>")
response.set_cookie('your_cookie', '你好')
return response
罕用:
rep.set_cookie(key,value,...)
rep.set_signed_cookie(key,value,salt='加密字符串', max_age=None, ...)
- 获取 cookie
示例:
def cookie_get(request):
if 'your_cookie' in request.COOKIES:
response = HttpResponse("获取 Cookie")
return response
罕用:
request.COOKIES['key']
request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=None)
- 总结
办法 | 形容 |
---|---|
rep.set_cookie(key,value,…) | 设置 cookie |
rep.set_signed_cookie(key,value,salt=’ 加密字符串 ’, max_age=None, …) | 加盐的 cookie 设置,参数:1)key, 键 2)value=”, 值 3)max_age=None, 超时工夫 4)expires=None, 超时工夫(IE requires expires, so set it if hasn’t been already.) 5)path=’/’, Cookie 失效的门路,/ 示意根门路,非凡的:根门路的 cookie 能够被任何 url 的页面拜访 6)domain=None, Cookie 失效的域名 7)secure=False, https 传输 9)httponly=False 只能 http 协定传输,无奈被 JavaScript 获取(不是相对,底层抓包能够获取到也能够被笼罩) |
request.COOKIES[‘key’] | 一般 cookie 获取 |
request.get_signed_cookie(key, default=RAISE_ERROR, salt=”, max_age=None) | 加盐的 cookie 获取, 参数:1)default: 默认值 2)salt: 加密盐 3)max_age: 后盾管制过期工夫 |
二.session
对于敏感、重要的信息,倡议要储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息,这时候就要用到 session。
session 将重要信息保留在服务器端,返回给客户端一个随机字符串,保留在 cookie 中。
session 的特点:
- 1) session 是以键值对进行存储的。
- 2) session 依赖于 cookie。惟一的标识码保留在 sessionid cookie 中。
- 3) session 也是有过期工夫,如果不指定,默认两周就会过期。
2.1 Django Session 的罕用办法
用处 | 办法 |
---|---|
获取 | 1) request.session[‘k1’] 2) request.session.get(‘k1’,None) |
设置 | 1)request.session[‘k1’] = “abc” 2)request.session.setdefault(‘k1’,”abc”) |
删除 Session 中数据 | del request.session[‘k1’] |
键、值、键值对罕用办法 | 1)request.session.keys() 2)request.session.values() 3)request.session.items() 4)request.session.iterkeys() 5)request.session.itervalues() 6)request.session.iteritems() |
会话 session 的 key | request.session.session_key |
将所有 Session 生效日期小于以后日期的数据删除 | request.session.clear_expired() |
查看会话 session 的 key 在数据库中是否存在 | request.session.exists(“session_key”) |
删除以后会话的所有 Session 数据 | request.session.delete() |
删除以后的会话数据并删除会话的 Cookie。 | request.session.flush() |
设置会话 Session 和 Cookie 的超时工夫 | request.session.set_expiry(value) 如果 value 是个整数,session 会在些秒数后生效。如果 value 是个 datatime 或 timedelta,session 就会在这个工夫后生效。如果 value 是 0, 用户敞开浏览器 session 就会生效。如果 value 是 None,session 会依赖全局 session 生效策略。 |