美文网首页
Django2.2.3使用cookie时报错解决办法(异同点)

Django2.2.3使用cookie时报错解决办法(异同点)

作者: 王文强Python | 来源:发表于2019-07-11 15:08 被阅读0次

先来一段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: '/' })

相关文章

网友评论

      本文标题:Django2.2.3使用cookie时报错解决办法(异同点)

      本文链接:https://www.haomeiwen.com/subject/hncdkctx.html