Django中操作Cookie
Cookie 就是保存在浏览器端的键值对
1. 服务端可以在浏览器上设置COOKIE 保存在浏览器上的
2. 每次请求会携带COOKIE
3. Cookie是有效时间的
4. 可以用来做登录或其他事情
获取Cookie
request.COOKIES[‘key‘] request.get_signed_cookie(key, default=RAISE_ERROR, salt=‘‘, max_age=None)
参数:
- default: 默认值
- salt: 加密盐
- max_age: 后台控制过期时间
设置Cookie
rep = HttpResponse(...) rep = render(request, ...) rep.set_cookie(key,value,...) rep.set_signed_cookie(key,value,salt=‘加密盐‘,...)
参数:
- key, 键
- value=‘‘, 值
- max_age=None, 超时时间
- expires=None, 超时时间(IE requires expires, so set it if hasn‘t been already.)
- path=‘/‘, Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问
- domain=None, Cookie生效的域名
- secure=False, https传输
- httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
删除Cookie
def logout(request): rep = redirect("/login/") rep.delete_cookie("user") # 删除用户浏览器上之前设置的usercookie值 return rep
Cookie版登陆校验
# 登录 def login(request): if request.method=="POST": name=request.POST.get("name") pwd=request.POST.get("pwd") if name=="cao" and pwd=="123": rep=redirect("/index1/") # rep.set_cookie("name",name) # 加盐 # rep.set_signed_cookie("name",name ,salt="nidaye # 设置时间,时间一到自动跳转到登录页面 # rep.set_signed_cookie("name",name,salt="nidaye",max_age=10) #path=‘/‘, Cookie生效的路径,/ 表示根路径,特殊的:根路径的cookie可以被任何url的页面访问 rep.set_signed_cookie("name1", name, salt="nidaye", max_age=100,path="/index1/") return rep return render(request,"login.html") def index1(request): # name=request.COOKIES.get("name") # 加盐的 # name=request.get_signed_cookie("name",None,salt="nidaye") # 时间一到,name取不到值则跳转到登录页面 name = request.get_signed_cookie("name1", None, salt="nidaye") # 如果取不到name则自动跳转到登录页面 if not name: return redirect("/login/") return render(request,"index1.html",{"name":name}) def index2(request): name = request.get_signed_cookie("name1", None, salt="nidaye") if not name: return redirect("/login/") return render(request,"index2.html",{"name":name})
hhhhhh