zoukankan      html  css  js  c++  java
  • Day71 分页,cookie and Session

    • cookie 是保存在客户端的键值对.

    • cookie本身最大支持4096字节,保存在客户端的

    • session是保存在服务器端的键值对.(依赖cookie)

    cookie和session

    cookie的由来?

    因为http请求是没有状态的,每一次请求都是独立的(对于服务端来说,一切都是只如初见!) 

    cookie 是什么?

    就是保存在浏览器上的键值对。

    cookie的应用

    1.登录、七天免登录 

    2. 记录用户的浏览习惯.

    3.简单的投票限制。

     

     

     

     

     cookie 默认关闭浏览器 就消失了。。。 

     

     

     

     session

    session是什么 ?

    是保存在服务器端的键值对.

    session 必须依赖于cookie

    Django中session 做的事情:

    1. 在服务器端生成随机字符串

    2.生成一个和上面随机字符串对应的大字典,用来保留用户数据的。

    3. 随机字符串当成Cookie返回给浏览器

    取Session:

    1. 从请求携带的COOKIE里面找到随机字符串.

    2. 拿到随机字符串 去session 中对应的大字典.

    3.从大字典中根据key 取值.

    session 的优势

    1. 比cookie能存的数据多。

    2. 安全性好 ,数据都保存在服务端。

    session的缺点

    1.session 数据量大,会占用一些内存.

     

     

     

     

    获取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='加密盐',...)
    

      

    删除cookie

    def logout(request):
        rep = redirect("/login/")
        rep.delete_cookie("user")  # 删除用户浏览器上之前设置的usercookie值
        return rep

    例子

    def login(request):
         if request.method=='POST':
             user = request.POST.get('username')
             print(user)
             pwd =request.POST.get('pwd')
             if user =='alex' and pwd =='dsb':
                 #登录成功
                 #告诉浏览器保存一个键值对
                 rep =redirect('/home/')
                 print(rep)
                 # rep.set_cookie('is_login',1)
                 rep.set_signed_cookie('  ','1',salt='s10nb') #加盐的cookie
                 return rep
         return render(request,'login.html')
    
    
    def home(request):
      #从请求的cookie中找 # ret =request.COOKIES.get('is_login',0) ret=request.get_signed_cookie('is_login',default='0',salt='s10nb')#取加过盐的cookie if ret =='1' : #表示已经登录过了。 return render(request,'home.html') else: return redirect('/login/')

      

     Cookie默认关闭浏览器就失效

     

    三、session

  • 相关阅读:
    rpm yum 等命令无响应的解决方法
    ulimit open files linux打开文件数设置验证
    解析XtraBackup备份MySQL的原理和过程(转)
    Xtrabackup之innobackupex备份恢复详解(转)
    Linux中内存查看命令free详解(转)
    mysql innobackupex xtrabackup 大数据量 备份 还原(转)
    Percona Xtrabackup备份mysql(转)
    安装完 MySQL 后必须调整的 10 项配置(转)
    MySQL 5.5 服务器变量详解二(转)
    MySQL 5.5 服务器变量详解一(转)
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/9048073.html
Copyright © 2011-2022 走看看