Django中Cookie 和 Session

Posted 无名!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django中Cookie 和 Session相关的知识,希望对你有一定的参考价值。

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

以上是关于Django中Cookie 和 Session的主要内容,如果未能解决你的问题,请参考以下文章

Django中使用cookie和session

Django中Cookie 和 Session

cookie和session django中间件

Django中cookie和session的使用

60 django- cookie和session 以及中间件

第十一章 Django框架学习——Cookie和session