Cookie

一、Cookie介绍

Cookie是什么?

  • Cookie是由服务器生成的,存储在浏览器端的少量数据(键值对)
  • 服务器生成Cookie后,会在响应请求时发送Cookie数据给浏览器,浏览器接收到后会自动保存
  • 浏览器再次请求服务器时,会自动上传该服务器生成的所有的Cookie
  • Cookie是有过期时间的,默认关闭浏览器之后Cookie就会过期
  • 每个域名下保存的Cookie的个数是有限制的(50个),不同浏览器保存的个数不一样;
  • 每个Cookie保存的数据大小是有限制的(4K),不同的浏览器保存的数据大小不一样;
  • Cookie是基于域名安全的:
  • Cookie的存储是以域名的方式进行区分的;
  • 每个网站只能读取自己生成的Cookie,而无法读取其它网站生成的Cookie;
  • 浏览器请求某个网站时,会自动携带该网站所有的Cookie数据给服务器,但不会携带其它网站生成的Cookie数据。

二、Cookie操作:

在Django中Cookie的读写:

  • 读取数据

 request.COOKIES['键名']
或者:
request.COOKIES.get('键名')
  • 保存数据
 response.set_cookie('键名', count,max_age, expires)
  • max_age是一个整数,表示在指定秒数后过期
  • expires是一个datetime或timedelta对象,会话将在这个指定的日期/时间过期
  • max_age与expires二选一
  • 如果不指定过期时间,在关闭浏览器时cookie会过期

Session

一、Session介绍

  • 一些重要敏感的数据(银行卡账号,余额,验证码...),应该存储在服务器端,而不是存储在浏览器,这种在服务器端进行状态数据保存的方案就是Session
  • Session的使用依赖于Cookie,如果浏览器不能保存Cookie,那么Session则失效了
  • django项目有session模块,默认开启session功能,会自动存储session数据到数据库表中
  • Session也是有过期时间的,如果不指定,默认两周就会过期

二、Session的使用

1、开启session功能

  1. 在django项目,session功能默认是开启的;要禁用session功能,则可禁用下图中的session中间件:

2、session对象操作(request.session字典)

  • 保存session数据(键值对)

 request.session['键']=值
  • 读取session数据
 request.session.get('键',默认值)
  • 清除session数据数据
 request.session.clear()
或者:
request.session.flush()
  • 删除指定的sessoin键值对数据(注意:键不存在会报错KeyError)
 del request.session['键']
  • 设置会话的超时时间,如果没有指定过期时间则两个星期后过期
 request.session.set_expiry(value)
  • 如果value是一个整数,会话将在value秒没有活动后过期。
  • 如果value为0,那么用户会话的Cookie将在用户的浏览器关闭时过期。
  • 如果value为None,那么会话永不过期。

三、session存储方式

Session数据可以存储在数据库、内存、Redis等,可以通过在项目的setting.py中设置SESSION_ENGINE项,指定Session数据存储的方式。

  • 存储在数据库中,如下设置可以写,也可以不写,这是默认存储方式。
 SESSION_ENGINE='django.contrib.sessions.backends.db'
  • 存储在内存中:存储在本机内存中,如果丢失则不能找回,比数据库的方式读写更快
 SESSION_ENGINE='django.contrib.sessions.backends.cache'
  • 混合存储:优先从本机内存中存取,如果没有则从数据库中存取。
 SESSION_ENGINE='django.contrib.sessions.backends.cached_db' 
  • 通过Redis存储session

 

Django_cookie_session的更多相关文章

  1. Django,COOKIES,SESSION完成用户登入

    1.urls.py """Django_cookie_session URL Configuration The `urlpatterns` list routes UR ...

  2. django cookie and session

    cookie和session 1.cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie的工作 ...

随机推荐

  1. JavaScript四(DOM编程)

    一.绪论 DOM是文档对象模型(Document Object Module)的简称,借助DOM模型,可以将结构化文档,转换成DOM树,程序可以访问,修改,增加,删除树的节点.程序通过操作DOM树时, ...

  2. Zookeeper简介和安装(二)

    一.简介: Zookeeper是一个分布式协调服务,提供的服务如下: 命名服务:类似于DNS,但仅对于节点 配置管理:服务配置信息的管理 集群管理:Dubbo使用Zookeeper实现服务治理 分布式 ...

  3. Spring请求参数校验

    SpringMVC支持的数据校验是JSR303的标准,通过在bean的属性上打上@NotNull.@Max等进行验证.JSR303提供有很多annotation接口,而SpringMVC对于这些验证是 ...

  4. java中split分割"."的问题

    今天使用split分割"."的时候居然失败了,经过百度发现原来要加转义字符才行. 正确的写法: String test="1.2.3"; String[] s1 ...

  5. 五年级--python函数高级运用

    一.装饰器 二.迭代器 三.生成器 四.练习 一.装饰器 1.1 闭包函数用法 # 需求: # 执行一个函数前需要认证是否登录,如果登录则不需再登录. # 只认证一次,后续操作无需认证 # 要求认证使 ...

  6. C++ 利用流来进行string和其他类的转换

    通过这种方法可以实现任意转换,需要头文件 #include<string> #include<sstream> 期中sstream提供了我们的主角string流,下面给出int ...

  7. STL-Vector源码剖析

    G++ ,cygnus\cygwin-b20\include\g++\stl_vector.h 完整列表 /* * * Copyright (c) 1994 * Hewlett-Packard Com ...

  8. 高性能网络通信框架 HP-Socket

      HP-Socket 详细介绍 HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和Agent组件,广泛适用于各种不同应用场景的 TCP/UDP/ ...

  9. Spring通过构造方法注入的四种方式

    通过构造方法注入,就相当于给构造方法的参数传值 set注入的缺点是无法清晰表达哪些属性是必须的,哪些是可选 的,构造注入的优势是通过构造强制依赖关系,不可能实例化不 完全的或无法使用的bean. Me ...

  10. Linux时间子系统之二:表示时间的单位和结构

    人们习惯用于表示时间的方法是:年.月.日.时.分.秒.毫秒.星期等等,但是在内核中,为了软件逻辑和代码的方便性,它使用了一些不同的时间表示方法,并为这些表示方法定义了相应的变量和数据结构,本节的内容就 ...