Cookie 简单设置使用

cookie的理解能够为,存放在用户浏览器上的一个文件,里面是键值对数据,用于跟服务端通信。前端能够经过jquery cookie插件设置和读取,后端直接设置html

一、获取Cookie:前端

1
2
3
4
5
6
request.COOKIES[ 'key' ]
request.get_signed_cookie(key, default = RAISE_ERROR, salt = '', max_age = None )
     参数:
         default: 默认值
            salt: 加密盐
         max_age: 后台控制过时时间

二、设置Cookie:python

1
2
3
4
5
6
7
8
9
10
11
12
13
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传输,网站走https时要加上
         httponly = False     只能http协议传输,没法被JavaScript获取(不是绝对,底层抓包能够获取到也能够被覆盖)

因为cookie保存在客户端的电脑上,因此,JavaScript和jquery也能够操做cookie,如设置和获取。jquery

后端设置加密的cookie:django

res=redirect('/home')
res.set_signed_cookie('user1',u,max_age=5,salt='123')
后端获取加密cookie:
v = request.get_signed_cookie(key='user1',salt='123')

简单例子:后端

views:浏览器

 1 from django.shortcuts import render,HttpResponse,redirect
 2 
 3 dic = {
 4     "tom":{"pwd":'123'},
 5     "lily":{"pwd":'111'}
 6 }
 7 def login(request):
 8     if request.method=="GET":
 9         return render(request,'login.html')
10     u=request.POST.get('user')
11     pwd=request.POST.get('pwd')
12     if dic.get(u):
13         if dic[u]["pwd"]==pwd:
14             res=redirect('/home')
15             # res.set_cookie('user1',u)  #不设置缓存有效时间,浏览器重启后失效
16             # res.set_cookie('user1',u,max_age=5)  #设置max_age指定多少秒后失效
17             import datetime
18             curr_time=datetime.datetime.now()
19             expire_time=curr_time + datetime.timedelta(seconds=5)
20             print(curr_time,expire_time)
21             res.set_cookie('user1',u,expires=expire_time)  #设置max_age指定多少秒后失效
22             return res
23     else:
24         return redirect('/login')
25     return redirect('/login')
26 
27 def home(request):
28     v = request.COOKIES['user1']
29     if not v:
30         return render(request,'login.html')
31 
32 
33     return render(request,'home.html',{"curr_user":v})
View Code

templates:缓存

 1 login.html
 2 <!DOCTYPE html>
 3 <html lang="en">
 4 <head>
 5     <meta charset="UTF-8">
 6     <title>Title</title>
 7 </head>
 8 <body>
 9 <form action="/login" method="post">
10     <input type="text" name="user" placeholder="用户名" />
11     <input type="text" name="pwd" placeholder="密码" />
12     <input type="submit"/>
13 </form>
14 </body>
15 </html>
16 
17 home.html
18 <!DOCTYPE html>
19 <html lang="en">
20 <head>
21     <meta charset="UTF-8">
22     <title>Title</title>
23 </head>
24 <body>
25 <h1>欢迎你,{{ curr_user }}</h1>
26 </body>
27 </html>
View Code

 额外功能views:cookie

def page(request):
    list = []   #生成要发给前端的数据列表
    for i in range(1,779):
        list.append(i)

    cur_page = request.GET.get('page')
    if not cur_page:
        cur_page = 1
    else:
        cur_page = int(cur_page)

    obj = paginations.page_mod(data=list,cur_page=cur_page,dis_count=10,tray_len=7)
    data = obj.per_page_data    #分页后的内容
    nav_str = obj.page_str("/page")   #分布后的导航

    return render(request,'page.html',{'list':data,'dis_list':nav_str})
dic = {
    "tom":{"pwd":'123'},
    "lily":{"pwd":'111'}
}
def login(request):
    if request.method=="GET":
        return render(request,'login.html')
    u=request.POST.get('user')
    pwd=request.POST.get('pwd')
    if dic.get(u):
        if dic[u]["pwd"]==pwd:
            res=redirect('/home')
            res.set_cookie('user1',u)  #不设置缓存有效时间,浏览器重启后失效
            # res.set_cookie('user1',u,max_age=5)  #设置max_age指定多少秒后失效
            res.set_cookie('user1',u,path='/home')  #设置生效url,只在规定uri路径下才能获取当前设置的cookie
            # import datetime
            # curr_time=datetime.datetime.now()
            # expire_time=curr_time + datetime.timedelta(seconds=5)
            # print(curr_time,expire_time)
            # res.set_cookie('user1',u,expires=expire_time)  #设置max_age指定多少秒后失效
            return res
    else:
        return redirect('/login')
    return redirect('/login')

def home(request):
    v = request.COOKIES.get('user1')
    if not v:
        return render(request,'login.html')

    return render(request,'home.html',{"curr_user":v})

  ...app

相关文章
相关标签/搜索