### 11.10 cookie和session #### 11.10.1 cookie 定义:保存在浏览器本地上的一组组键值对 为什么有cookie? - http协议是无状态的,每次http请求都是对立的,相互之间没有关联,yongcoolie保存状态 特点: 1. 由服务器让浏览器进行设置的 2. 浏览器保存在浏览器本地 3. 下次访问的时候自动携带 4. 应用场景:登录、保存浏览器习惯、简单的投票 django中操作cookie 设置: ```python ret = redirect(‘index‘) ret.set_cookie(‘key‘,‘value‘,max_age=1000,path=‘/‘) #没有加盐的 ret.set_signed_cookie(‘is_login‘,‘1‘,‘liujia‘) #加盐 ``` 获取 ```python request.COOKIES.get() request.COOKIES[] request.COOKIES{} #未加盐的获取方式 is_login = request.get_signed_cookie(‘is_login‘,salt=‘liujia‘,default=‘‘)#加盐的获取方式 ``` 删除 ```python ret = redirect(‘/login/‘) ret.delte_cookie(‘is_login‘) ``` #### 11.10.2 session 定义:保存在服务器上的一组组键值对(必须依赖cookie) 为什么要有session - cookie保存在浏览器本地,不安全 - 大小个数受到限制 django中操作session ```python request.session[key]=value #获取 request.session[key] request.session.get(key) #查看session的全部配置 from django.conf import global_settings #将所有session失效日子小于当前日期的数据删除 request.session.clear_expired() #检查回话session的key在数据库中书否存在 request.sessin.exists(‘session_key‘) #删除当前会话的所有session数据 删除session的数据 不删除cookie request.session.delete() #删除当前的会话数据并删除会话的cookie 删除session的数据 删除cookie request.session.flush() 这用于确保前面的绘画数据不可以再次被用户的浏览器访问 例如:django.contrib.auth.logout() 函数中就会调用它 #设置会话数据和cookie的超时时间 request.sessiont_exirpy(value) ``` ###
原文地址:https://www.cnblogs.com/doraemon548542/p/11638555.html
时间: 2024-10-06 08:12:26