一、会话跟踪

  1. 我们先需要了解是什么是会话!可以把会话理解为客户端与服务器之间的一次会话,在一次会话中可能会包含多次请求和响应,例如你给10086打个电话,你就是客户端,而10086服务人员就是服务器,从双方接通电话的那一刻起,会话就开始了,到某一方挂断电话表示会话结束。在通话过程中,你会向10086发送多个请求,那么这多个请求都会在一个会话中。客户向某一服务器发送出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束。

  2. 在一次绘画的多次请求中数据共享,这就是会话跟踪计数

二、cookie

  1. 什么是cookie

    1. 首先来讲,cookie是浏览器技术,cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,可以理解为服务端给客户端的一个小甜点,下次访问服务器时会自动携带这些键值对,以便服务器提取有用信息。

  2. cookie的原理

    1. cookie的工作原理是:浏览器访问服务端,带着一个空的cookie,然后由服务器产生内容,浏览器收到响应后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是谁了。

  3. cookie与HTTP头

    1. cookie是通过HTTP请求和响应头在客户端和服务器端传递的

    2. cookie:请求头,客户端发送给服务器端

    3. 格式:cookie:a=A;b=B。既多个cookie用分号隔开

    4. set-cookie:响应头,服务器端发送给客户端;

  4. cookie的覆盖

    1. 如果服务器端发送重复的cookie那么会覆盖原有的cookie,例如客户端的第一个请求服务器端发送的cookie是set-cookie:a=A;第二个请求服务器端发送的是:set-cookie:a=AA,那么客户端只留下一个cookie,即:a=AA

三、django中操作cookie

  1. Ctrl + Shift + del三个键来清除页面缓存和cookie,将来这个操作你会用的很多。

  2. 获取cookie

    1. request.COOKIES['key']
      request.get_signed_cookie(key, default=RAISE_ERROR, salt='', max_age=Non
      default:默认值
      salt:加密盐
      max_age:后台控制过期时间
  3. 设置cookie

    rep = Httpresponse(...)
    rep = render(request,''') rep.set_cookie(key,value,...)
    rep.set_signed_cookie(key,value,salt='加密盐',max_age=None,...)

    参数

    1. key:键

    2. value:值

    3. max_age=None,超时时间

    4. expires=None,超时时间

    5. path='/',cookie生效的域名

    6. secure=False,https传输

    7. httponly=False 只能http协议传输,无法被Javascript获取

    
    
  4. 删除cookie

    1.   

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

四、session

 Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个独立的session对象,由于session为用户浏览器独享,所以用户在访问浏览器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问该服务器中的其他web资源时,其他web资源再从用户各自的session中取出数据为用户服务

五、django中操作session  

  1.获取值

request.session['k1']

request.session.get('k1',none)
#request.session这句是帮你从cookie里面将sessionid的值取出来,
将django-session表里面的对应sessionid的值的那条记录中的session-data字段的数据给你拿出来(并解密),get方法就取出k1这个键对应的值
查看所有的键、值、键值对
request.session.keys()
request.session.values()
request.session.items()

  2.设置值

request.session['k1'] = 123

request.session.setdefault('k1',123) #没有就添加,有就不变
#帮你生成随机字符串,帮你将这个随机字符串和用户数据(加密后)和过期时间保存到了django-session表里面,
帮你将这个随机字符串以sessionid:随机字符串的方式添加到cookie里面返回给浏览器,这个sessionid的名字是可以改的 #注意一个事情,django-session这个表,你不能通过orm来控制,因为你的models.py里面没有这个表的对应关系

  3.删除值

del request.session['k1'] #django-session表里面同步删除

#删除当前的会话数据并删除会话的cookie。
request.session.flush() #常用,清空所有cookie --- 删除session表里这个会话的记录,

Djangou中的session配置

Django中默认支持session其内部提供了5种类型的session供开发者使用
1. 数据库Session
SESSION_ENGINE = 'django.contrib.sessions.backends.db' # 引擎(默认) 2. 缓存Session
SESSION_ENGINE = 'django.contrib.sessions.backends.cache' # 引擎
SESSION_CACHE_ALIAS = 'default' # 使用的缓存别名(默认内存缓存,也可以是memcache),此处别名依赖缓存的设置 3. 文件Session
SESSION_ENGINE = 'django.contrib.sessions.backends.file' # 引擎
SESSION_FILE_PATH = None # 缓存文件路径,如果为None,则使用tempfile模块获取一个临时地址tempfile.gettempdir() 4. 缓存+数据库
SESSION_ENGINE = 'django.contrib.sessions.backends.cached_db' # 引擎 5. 加密Cookie Session
SESSION_ENGINE = 'django.contrib.sessions.backends.signed_cookies' # 引擎 其他公用设置项:
SESSION_COOKIE_NAME = "sessionid" # Session的cookie保存在浏览器上时的key,即:sessionid=随机字符串(默认)
SESSION_COOKIE_PATH = "/" # Session的cookie保存的路径(默认)
SESSION_COOKIE_DOMAIN = None # Session的cookie保存的域名(默认)
SESSION_COOKIE_SECURE = False # 是否Https传输cookie(默认)
SESSION_COOKIE_HTTPONLY = True # 是否Session的cookie只支持http传输(默认)
SESSION_COOKIE_AGE = 1209600 # Session的cookie失效日期(2周)(默认)
SESSION_EXPIRE_AT_BROWSER_CLOSE = False # 是否关闭浏览器使得Session过期(默认)
SESSION_SAVE_EVERY_REQUEST = False # 是否每次请求都保存Session,默认修改之后才保存(默认)

Djangou中使用cookie和session的更多相关文章

  1. 第74节:Java中的Cookie和Session

    第74节:第74节:Java中的Cookie和Session ServletContext: 什么是ServletContext,有什么用哦,怎么用呢? 启动服务器后,会给每个应用程序创建一个Serv ...

  2. Flask中使用cookie和session

    Flask中使用cookie和session 设置cookie from flask import Flask,Response app = Flask(__name__) @app.route('/ ...

  3. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  4. django系列7.2--django中的cookie和session基本操作,浏览器登陆验证的不同实现

    django中的cookie和session(02)–操作 一.Django中的cookie操作 ctrl + shift + del 是谷歌浏览器中清除页面缓存和cookie的快捷键 1.设置coo ...

  5. IM开发基础知识补课(四):正确理解HTTP短连接中的Cookie、Session和Token

    本文引用了简书作者“骑小猪看流星”技术文章“Cookie.Session.Token那点事儿”的部分内容,感谢原作者. 1.前言 众所周之,IM是个典型的快速数据流交换系统,当今主流IM系统(尤其移动 ...

  6. Django---Django中使用COOKIE和SESSION

    Django---Django中使用COOKIE和SESSION 一丶Cookie cookie的由来 # HTTP协议是无状态的. # 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请 ...

  7. Servlet中的cookie和session

    保存数据的2中方式 Cookie Session Cookie 我们可以将一些信息保存到cookie中,cookie存放在对应的浏览器目录里面.每个站点可以保存20个cookie,最大长度不超过4k. ...

  8. Django中的cookie与session

    cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...

  9. 理解会话中的Cookie和Session对象

    会话可以简单理解为:用户打开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 在java语言中,Servlet程序是由WEB服务器调用,web服务器收到客 ...

随机推荐

  1. ABP开发框架前后端开发系列---(9)ABP框架的权限控制管理

    在前面两篇随笔<ABP开发框架前后端开发系列---(7)系统审计日志和登录日志的管理>和<ABP开发框架前后端开发系列---(8)ABP框架之Winform界面的开发过程>开始 ...

  2. 最全java多线程总结3——了解阻塞队列和线程安全集合不

      看了前两篇你肯定已经理解了 java 并发编程的低层构建.然而,在实际编程中,应该经可能的远离低层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是 ...

  3. PATA 1027 Colors In Mars

    #include <cstdio> char radix[13] = {'0','1','2','3','4','5','6','7','8','9','A','B','C'}; int ...

  4. Excel导出打印失败报错 (eg HSSF instead of XSSF)

    错误信息: java.lang.RuntimeException: org.apache.poi.openxml4j.exceptions.OLE2NotOfficeXmlFileException: ...

  5. mount -- 挂载理解

    1.挂载? 在windows操作系统中, 挂载通常是指给磁盘分区(包括被虚拟出来的磁盘分区)分配一个盘符. 第三方软件,如磁盘分区管理软件.虚拟磁盘软件等,通常也附带挂载功能. 在linux操作系统中 ...

  6. 从微信小程序开发者工具源码看实现原理(一)- - 小程序架构设计

    使用微信小程序开发已经很长时间了,对小程序开发已经相当熟练了:但是作为一名对技术有追求的前端开发,仅仅熟练掌握小程序的开发感觉还是不够的,我们应该更进一步的去理解其背后实现的原理以及对应的考量,这可能 ...

  7. Linux命令学习-mv命令

    Linux中,mv命令的全称是move,主要作用是移动文件或文件夹,类似于Windows下的剪切功能,同时还可以用于修改名字. 假设当前处于wintest用户的主目录,路径为 /home/wintes ...

  8. Java学习笔记之---集合

    Java学习笔记之---集合 (一)集合框架的体系结构 (二)List(列表) (1)特性 1.List中的元素是有序并且可以重复的,成为序列 2.List可以精确的控制每个元素的插入位置,并且可以删 ...

  9. shell_umask用法

    我曾经用touch命令创建一个文件script,默认的权限是"rw-r- -r- -",有的朋友就有可能问为什么是这种组合?其实,这正是umask命令捣的鬼.在linux上输入:u ...

  10. Redis原子性写入HASH结构数据并设置过期时间

    Redis中提供了原子性命令SETEX或SET来写入STRING类型数据并设置Key的过期时间: > SET key value EX NX ok > SETEX key value ok ...