关于django:五Django-Web开发cookie与session

38次阅读

共计 2308 个字符,预计需要花费 6 分钟才能阅读完成。

一.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 生效策略。

正文完
 0