先来一段django2.2.3存储和获取cookie的方法
user_info={
#创建一个后台数据组
'dachengzi':{'pwd':'123123'},
'gangbazi':{'pwd':'123'},
}
def login(request):
if request.method == "GET": #通过GET请求返回到login界面
return render(request, 'login.html')
if request.method == "POST": #登陆的请求方式为POST
u = request.POST.get('user')
p = request.POST.get('pwd')
dic = user_info.get(u)
if not dict:
return render(request, 'login.html')
if dic['pwd'] == p: #如果密码与前端输入的相同
res = redirect('/index')
res.set_cookie('username',u) #设置cookie里的用户名
return res
else:
return render(request, 'login.html')
def index(request):
v = request.COOKIES.get('username') #从cookie里得到用户名
if not v: #用户名不存在
return redirect('/login')
return render(request,'index.html',{'current_user': v})
2、异同点
1、存储时与 dajngo2.2.3 以下版本是一致的:res.set_cookie('username',u)
2、不同点在于获取cookie时的方法变了:
a、旧版本获取 cookie 的方法是: username= request.COOKIES['username']
b、django2.2.3获取cookie的方法是:username= request.COOKIES.get('username')
3、设置cookie
1、实例化完response 对象
1、response = HttpResponse(...) #括号中返回一段字符串。
2、response = render(request, ...) #括号中的省略号为一个HTML文件路径。
3、response =redirect("/...") #括号中“/ ” 为urls路径。
2、两种方法设置cookie:
1、response .set_cookie(key,value,参数...)
2、response .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获取(不是绝对,底层抓包可以获取到也可以被覆盖)
4、前端 JS 操作cookie。
由于cookie保存在客户端的电脑上,所以,JavaScript和jquery也可以操作cookie。
<script src='/static/js/jquery.cookie.js'></script>
$.cookie("list_pager_num", 30,{ path: '/' })
网友评论