cookie和session

cookie是保存在客户端(浏览器)的数据

1.获取cookie

request.COOKIES.get('key')  get形式

request.COOKIES['key']  字典形式

request.get_signed_cookie('key',salt='sdasdas')    加密形式  salt为加密盐

def cook1(request):
    #获取当前已经登录的用户

    v=request.COOKIES.get('username_cookie')   # 获取cookie
 #或者 v=request.COOKIES['username_cookie']  # 获取cookie
    try:
        v=request.get_signed_cookie('username_cookie',default=RAISE_ERROR,salt='sdasdas')   #获取加密cookie

        print(v)
        if not v:
            return redirect('/xiaoqing/cookie')


        else:
            return render(request,'cookie1.html',{'current_user':v,})

    except Exception as e:
        return redirect('/xiaoqing/cookie')

 参数:default: 默认值

           salt: 加密盐

           max_age: 后台控制过期时间

2.设置cookie

def cook(request):

    err_msg=""
    if request.method == "GET":
        return render(request,'cookie.html')

    if request.method == "POST":

        username = request.POST.get('username')
        p = request.POST.get('password')

        dic = user_info.get(username)
        print(dic)

        if not dic:
            err_msg="用户不存在"
            return render(request,'cookie.html',{'err_msg':err_msg})

        if dic['pwd'] == int(p):

            res = redirect('/xiaoqing/cookie1')
            # res.set_cookie('username_cookie',username)   #设置cookie   关闭浏览器失效
            # res.set_cookie('username_cookie',username,max_age=10)   设置cookie失效时间 10秒过期
            import datetime
            current_date=datetime.datetime.utcnow()
            change_date=current_date+datetime.timedelta(seconds=5)
            res.set_cookie('username_cookie',username,expires=change_date)   #到哪个时间失效

            # res.set_signed_cookie('username_cookie',username,salt='sdasdas')

            return res
        else:
            return render(request,'cookie.html')
 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获取(不是绝对,底层抓包可以获取到也可以被覆盖)

 

猜你喜欢

转载自www.cnblogs.com/sunhao96/p/8931177.html