Cookie

概念:

  • Cookie,也叫Cookies,指某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),好比会员卡或餐票。

特点:

  • Cookie是由服务器端生成的一小段信息,发送给User-Agent(一般是浏览器)保管。
  • 当浏览器请求某网站时,会将本网站下所有Cookie信息提交给服务器。
  • Cookie以键值对的格式进行信息的存储。
  • Cookie基于域名安全,不同域名的Cookie是不能互相访问的。
  • Cookie有过期时间,如果不指定,关闭浏览器就过期
  • 因为电脑上的浏览器可能被其它人使用,建议cookie不要存储敏感信息如密码。
  • 典型应用:记住用户名,购物车,网站的广告推送等。

设置:

  • 需要一个HttpResponse类(或子类)对象,该对象中有一个方法set_cookie,通过[对象.set_cookie(key=“",value="”,max_age=XXX[秒],xxx)]设置 ,过期时间可以用max_age 和 expires 两种形式来设置,max_age 的值为秒数,expires的值为具体过期时间。

获取:

  • cookie保存在浏览器返回的request对象的COOKIES属性里面,(在学习HttpReqeust对象的属性时,说过COOKIES是一个标准的Python字典,包含所有的cookie,键和值都为字符串)可以通过dict['键'] 或 .get('键') 的方法获取。

Session

概念:

  • 类似于cookie,对于敏感、重要的信息,需要在服务器端进行状态保持就用session,服务端将session的id给浏览器,数据存在服务器。

特点:

  • 储存在服务器端,通过设置SESSION_ENGINE项指定Session数据存储的方式,可以存储在数据库、缓存、Redis等
  • Session包括三个数据:键,值,过期时间
  • session的id是通过cookie给浏览器的,如果想使用Session,浏览器必须支持Cookie,否则就无法使用Session了,也是就是session依赖于cookie。

操作:

  • 与cookie不同的是 session 的设置和取值全部通过Httprequest 对象的Session属性进行读写操作
  • 增、改
  • request.session['键']=值
  • request.session.get('键',默认值)
    request.session['键']
  • del request.session['键']  删除会话中的指定键及值,在存储中只删除某个键及对应的值
    request.session.clear() 清除所有会话,在存储中删除值部分
    request.session.flush() 清除会话数据,在存储中删除会话的整条数据
  • 设置会话的超时时间,(默认两个星期)
    • 如果value是一个整数,会话将在value秒没有活动后过期
    • 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期
    • 如果value为None,那么会话永不过期
  • request.session.set_expiry(value)

Django边学边记--状态保持(cookie和session)的更多相关文章

  1. Django(十三)状态保持 —— cookie与session+ajax异步请求+session记住登录状态+cookie记住登录名密码

    一.状态保持的概述 http协议是无状态的.下一次去访问一个页面时并不知道上一次对这个页面做了什么.因此引入了cookie.session两种方式来配合解决此问题. Duplicate entry:重 ...

  2. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  3. django基础之Ajax、分页、cookie与session

    目录: Ajax之json Ajax简介 jquery实现的ajax js实现的ajax django分页器 COOKIE与SESSION 一.Ajax之json 1.什么是json? 定义: JSO ...

  4. Django边学边记—视图

    一. url (一)配置 在项目/settings.py中通过ROOT_URLCONF指定url配置 ROOT_URLCONF = 'XXXX.urls' 打开 项目/urls.py 配置 (二)语法 ...

  5. Django边学边记——中间件

    特点 Django中的中间件是一个轻量级.底层的插件系统,可以介入Django的请求和响应处理过程,用于全局修改Django的输入或输出. 每个中间件组件负责做一些特定的功能.中间件全部注册在sett ...

  6. Django边学边记—静态文件

    概念 项目中的CSS.图片.js都是静态文件 一般会将静态文件放到一个单独的目录中,以方便管理 在html页面中调用时,也需要指定静态文件的路径,Django中提供了一种解析的方式配置静态文件路径 静 ...

  7. Django边学边记—模板

    功能 产生html,且不仅仅是一个html 包含: 静态内容:html,css,js 动态内容:模板语言 使用 一般使用 Django中提供的简写函数render调用模板 render(request ...

  8. Django边学边记—模型查询

    查询集 两大特性 惰性执行:创建查询集不会访问数据库,直到调用数据时,才会访问数据库,调用数据的情况包括迭代.序列化.与if合用 缓存:查询集的结果被存下来之后,再次查询时会使用之前缓存的数据 返回列 ...

  9. Django边学边记—新手Django建项目各流程细节

    一.准备虚拟环境 1)安装 virtualenv pip install virtualenv 2)virtualenvwrapper pip install virtualenvwrapper-wi ...

随机推荐

  1. 启动Django报错:SyntaxError: Generator expression must be parenthesized 解决办法

    这是因为版本不兼容所导致的. 此错误已知与Python问题#32012相关.基于Django 1.11.16及以下的项目将在Python 3.7启动时引发此异常.此问题的补丁已合并到Django 2. ...

  2. sentinel使用(结合gateway)

    前 如果你想在Spring Cloud Gateway中使用Sentinel Starter,你需要添加Spring - Cloud -alibaba- Sentinel - Gateway依赖,并添 ...

  3. 从eclipse转idea不适记录【持续更新】

    使用eclipse和idea时,快捷键对比 从一些最扎心的开始: 关于print一类的打印输出:System.out.println()补全 idea中可以sout.souf.serr:分别对应out ...

  4. 《深入理解java虚拟机》第3版笔记3

    第3章 垃圾收集器与内存分配策略 可达性分析算法 在Java技术体系里面,固定可作为GC Roots的对象包括以下几种: 在虚拟机栈(栈帧中的本地变量表)中引用的对象,譬如各个线程被调用的方法堆栈中使 ...

  5. 第13篇-通过InterpreterCodelet存储机器指令片段

    在TemplateInterpreterGenerator::generate_all()函数中生成了许多字节码指令以及一些虚拟机辅助执行的机器指令片段,例如生成空指针异常抛出入口的实现如下: { C ...

  6. 详解 Interpolator动画插值器

    Interpolator 被用来修饰动画效果,定义动画的变化率.在Android源码中对应的接口类为TimeInterpolator,通过输入均匀变化的0~1之间的值,可以得到匀速.正加速.负加速.无 ...

  7. vscode如何配置ts的lint,如何配置才能让eslint和prettier不冲突一键格式化代码(vue开发使用)

    最近在使用ts,发觉tslint在vscode上使用很不方便,不如eslint一键格式化高效,就想着能不能配置下vscode让其像写js一样爽 这篇文章主要解决2个问题,第一个是如何让vscode使用 ...

  8. 详细解读go语言中的map

    Map map底层是由哈希表实现的 Go使用链地址法来解决键冲突. map本质上是一个指针,指向hmap 这里的buckets就是桶,bmap 每一个bucket最多可以放8个键值对,但是为了让内存排 ...

  9. 基于CentOS7.x Linux操作系统,从0开始构建一套Docker虚拟化平台,使用二进制Tar包方式,部署的步骤和方法如下:

    #配置centos7的yum源#建议阿里源#链接:https://yq.aliyun.com/articles/525282?type=2#从Docker官网下载软件包: ls -l docker-1 ...

  10. MySQL主库手动复制至从库

    原文转自:https://www.cnblogs.com/itzgr/p/10233932.html作者:木二 目录 一 主库手动复制至从库 1.1 Master主库锁表 1.2 主库备份 1.3 从 ...